Toy → 3종류의 terms로 이루어짐
모두 integer 형이기 때문에 반환형은 필요 없다.
(DEFUN ADD (x y)
( M x (M 0 y) )
)
// ADD 는 함수명 (x y)는 인자(former parameter)
// 이건 연산을 한게 아니라 등록을 위한 것이다.
=> ADD
// 잘 끝나면 인터프리터가 이름 보내줌
(ADD 3 4); // 3 4 는 actuall parameter
=> 7
(e2) Equal: parameter 2개
(M ( M 1 ( IF ( M x y ) 1 ) ) ( IF ( M y x ) 1 ) )
x > y :
x = y :
x < y :
(e4) ITE (if then else) : parameter 3개
(ADD (IF x y) ( IF (MINUS 1 x ) z ))
(e5) Times : prameter 2개
x * y = if (y >= 1) x + x*(y-1)
else 0
(DEFUN TIMES ( X Y )
(ITE X (ADD Y (TIMES (M X 1) Y) 0)
)
함수언어에서는 재귀로 하는것을 좋아한다.
(e?) Factorier : 구현하는 게 시험일듯