KTUGFaq

KTUG FAQ

로그인:
비밀번호:
가입
To criticize the incompetent is easy; it is more difficult to criticize the competent.
FrontPage › LambdaCalculusInTeX
DeleteMe 계속 추가 됩니다. --작은나무

목차

1 Logic
1.1 진리값과 그 연산자들
1.2 조건문
2 리스트

참고문헌
  • List in TeX's Mouth, Alan Jeffrey
  • THE COMPUTER SCIENCE OF TeX AND LaTeX, Victor Eijkhout

1 Logic

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
위의 정의대로라면, 참(\True)은 두개의 인자중 첫번째 인자의 값이고, 거짓(\False)은 두번째 인자의 값이다. 이것이 의미가 있으려면, 그 두개의 인자는 T와 F 이어야 한다. 즉 \True와 \False가 뜻하는 의미는 다음과 같다.
input : \True TF
output: T

input : \False TF
output: F
따라서 앞으로 나오는 모든 논리문 다음에는 언제나 두개의 인자 TF가 있는 것으로 간주한다.

논리 연산자들을 정의한다.
\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 값에 관계없이 거짓이다. 즉 참은 첫번째 인자를 거짓을 두번째 인자를 취한다는 것에 착안하면 \And의 정의는 위와 같은 것이고, \Or도 마찬가지이다.

진리값들과 연산자들을 테스트 해보자.
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
)
  • \And \True \False TF, \AND의 정의대로 전개하면,
    \And \True \False TF 
    ==> \True{\False}\False TF
    ==> \False TF
    ==> F
    
  • \Not \True TF, \NOT의 정의대로 전개하면,
    \Not \True TF
    ==> \True{F}{T}
    ==> 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}
사용 문법
\TeXIf <test> <arg>
테스트 한다:
\def\IfIsPositive{\TeXIf{\ifnum0<}}

Numerical test:
  input : \IfIsPositive {3} TF
  output : T
Numerical test:
  input : \IfIsPositive {-2} TF
  output : F
설명)
  • \IfIsPositive { 3 } TF를 정의대로 전개하면,
    \IfIsPositive {3} TF
    ==> \TeXIf{\ifnum0<}{3}TF
    ==> \ifnum0<3\gobblefalse\else\gobbletrue\fi TF
    ==> \ifnum0<3\fi T
    ==> T
    

2 리스트

리스트는 머리(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. \]


DeleteMe. 페이지 이름을 바꾸었습니다.

^
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2006-05-15 19:06:39
Processing time 0.0375 sec