if문 예제
> (if (< 1 2) 'A 'B)
A
> (if (< 1 2) (if (< 1 2) 'C 'D) 'B)
C
|
생각해보니 lisp의 if는 if then-else 이지 if - else if - else 가 아닌것 같다.
물론 불편하지만 else if 대신 else 에 if를 중첩해서 쓰면 되긴 하지만
언어 컨셉이 다르니 c언어와 다르다고 해서 안좋아! 라고 하긴 그렇겠....지?
[링크 : http://gigamonkeys.com/book/macros-standard-control-constructs.html]
그리고 if문에서 lisp 안에 하나의 문장만 해결하기에는 2% 부족하니
sequence로 여러개의 실행을 할 수 있도록 하는 progn이 필요하다.
progn은 마지막 것을
progn1 은 처음 것
progn2 는 두번째 것을 return 한다.
[링크 : http://www.delorie.com/gnu/docs/elisp-manual-21/elisp_125.html]
+++
두개를 조합하면?
그리고 if문에서 lisp 안에 하나의 문장만 해결하기에는 2% 부족하니
sequence로 여러개의 실행을 할 수 있도록 하는 progn이 필요하다.
progn은 마지막 것을
progn1 은 처음 것
progn2 는 두번째 것을 return 한다.
[10]> (progn (print "The first form")
(print "The second form")
(print "The third form"))
"The first form"
"The second form"
"The third form"
"The third form"
[11]> (prog1 (print "The first form")
(print "The second form")
(print "The third form"))
"The first form"
"The second form"
"The third form"
"The first form"
[12]> (prog2 (print "The first form")
(print "The second form")
(print "The third form"))
"The first form"
"The second form"
"The third form"
"The second form" |
+++
두개를 조합하면?
> (if (> 2 3) (progn (print "i am a boy") (print "you are a girl"))
(progn (print "tt") (print"aa")))
"tt"
"aa"
"aa"
|
'Programming > lisp' 카테고리의 다른 글
lisp cond (0) | 2013.01.28 |
---|---|
lisp when/unless macro (2) | 2013.01.28 |
lisp eval & apply (0) | 2013.01.22 |
xlisp에서 incf 오류 (0) | 2013.01.19 |
lisp backquote / 유사인용 (0) | 2013.01.19 |