KTUGFaq

KTUG FAQ

Lambda calculus in TEX (rev. 1.2)

·Î±×ÀÎ:
ºñ¹Ð¹øÈ£:
°¡ÀÔ
The time is right to make new friends.
MiKTeXѱȯ&value=MiKTeX/¹®Á¦Á¡TeX�������&value=³»°¡¾²´ÂÆíÁý±âSpeedBarKarnes/2006-05UnBatangOdal&value=UnBatangOdal › Lambda calculus in TEX

Logic with TeX

DeleteMe °è¼Ó Ãß°¡ µË´Ï´Ù. --ÀÛÀº³ª¹«

¸ñÂ÷


Âü°í¹®Çå
  • List in TeX's Mouth, Alan Jeffrey
  • THE COMPUTER SCIENCE OF TeX AND LaTeX, Victor Eijkhout

1.1 Áø¸®°ª°ú ±× ¿¬»êÀÚµé

°£´ÜÇÏÁö¸¸ À¯¿ëÇÑ ¸ÅÅ©·ÎºÎÅÍ Á¤ÀÇÇÑ´Ù.
\def\Ignore#1{}
\def\Identity#1{#1}
\def\First#1#2{#1}
\def\Second#1#2{#2}
»ç¿ë·Ê
Taking first argument:
  input : \First {first}{second}
  output : first
Taking second argument:
  input : \Second {first}{second}
  output : second
Áø¸®°ªÀ» Á¤ÀÇÇÑ´Ù.
\let\True=\First
\let\False=\Second
³í¸® ¿¬»êÀÚµéÀ» Á¤ÀÇÇÑ´Ù.
\def\And#1#2{#1{#2}\False}
\def\Or#1#2{#1\True{#2}}
\def\Twiddle#1#2#3{#1{#3}{#2}}
\let\Not=\Twiddle
¼³¸í: \And x y ÀÇ °ªÀº x°¡ ÂüÀ̸é, yÀÇ °ªÀÌ°í, x°¡ °ÅÁþÀ̸é, y °ª¿¡ °ü°è¾øÀÌ °ÅÁþÀÌ´Ù.

À§ÀÇ ³í¸®¿¬»êÀ» Å×½ºÆ®Çϱâ À§Çؼ­´Â ¿¬»ê¹® ¸Ç µÚ¿¡ TF¸¦ ºÙÀδÙ; Áï, \True TF´Â T¸¦, \False TF´Â F¸¦ Ãâ·ÂÇÑ´Ù.

Áø¸®°ªµé°ú ¿¬»êÀÚµéÀ» Å×½ºÆ® Çغ¸ÀÚ.
True takes first of TF:
  input : \True TF
  output : T
False takes second of TF:
  input : \False TF
  output : F
Not true is false:
  input : \Not \True TF
  output : F
And truth table TrueTrue:
  input : \And \True \True TF
  output : T
And truth table TrueFalse:
  input : \And \True \False TF
  output : F
And truth table FalseTrue:
  input : \And \False \True TF
  output : F
And truth table FalseFalse:
  input : \And \False \False TF
  output : F
Or truth table TrueTrue:
  input : \Or \True \True TF
  output : T
Or truth table TrueFalse:
  input : \Or \True \False TF
  output : T
Or truth table FalseTrue:
  input : \Or \False \True TF
  output : T
Or truth table FalseFalse:
  input : \Or \False \False TF
  output : F

1.2 Á¶°Ç¹®

±âº» ¸ÅÅ©·ÎµéÀ» Á¤ÀÇÇÑ´Ù.
\def\gobblefalse\else\gobbletrue\fi#1#2{\fi#1} \def\gobbletrue\fi#1#2{\fi#2} \def\TeXIf#1#2{#1#2 \gobblefalse\else\gobbletrue\fi} \def\IfIsPositive{\TeXIf{\ifnum0<}}
»ç¿ë ¹®¹ý
\TeXIf <test> <arg>
Å×½ºÆ® ÇÑ´Ù:
Numerical test:
  input : \IfIsPositive {3} TF
  output : T
Numerical test:
  input : \IfIsPositive {-2} TF
  output : F

1.3 ¸®½ºÆ®

¸®½ºÆ®´Â ¸Ó¸®(head)¿Í ²¿¸®(tail)·Î Á¤ÀÇ µÇ´Âµ¥, ¸Ó¸®´Â ÇÑ ±¸¼º¿ä¼Ò(element) ÀÌ°í, ²¿¸®´Â ¶Ç´Ù¸¥ ¸®½ºÆ®ÀÌ´Ù. Áï ¸®½ºÆ®´Â ±× Á¤ÀÇ°¡ Àç±ÍÀûÀÌ´Ù. ºó ¸®½ºÆ®(empty list)¸¦ Nil·Î Ç¥±âÇÑ´Ù.
\let\Nil=\False
À§ÀÇ ¸®½ºÆ®ÀÇ Á¤ÀǸ¦ µÎ°³ÀÇ ÀÎÀÚ¸¦ °¡Áø ¿¬»êÀÚ·Î ±¸ÇöÇÑ´Ù:
  • ¸¸¾à ¸®½ºÆ®°¡ ºñ¾îÀÖÁö ¾Ê´Ù¸é, ù¹ø° ÀÎÀÚ´Â ¸Ó¸®¿¡ Àû¿ëµÇ°í, ²¿¸®°¡ ±× ¸®½ºÆ®ÀÇ °ªÀÌ µÈ´Ù.
  • ¸¸¾à ¸®½ºÆ®°¡ ºñ¾îÀÖ´Ù¸é, µÎ¹ø° ÀÎÀÚ°¡ ¸®½ºÆ®ÀÌ °ªÀÌ µÈ´Ù.

    \[ La_1a_2 = \left\{ \begin{array}{ll}
                      a_2     & \mbox{if $L=()$} \\
                      a_1(x)Y & \mbox{if $L=(x,Y)$}
                    \end{array}
             \right. \]