Programming/lisp2013. 1. 28. 10:22
if문 예제
> (if (< 1 2) 'A 'B)
A
> (if (< 1 2) (if (< 1 2) 'C 'D) 'B)

생각해보니 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 한다.

[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" 

[링크 : http://www.delorie.com/gnu/docs/elisp-manual-21/elisp_125.html]



+++
두개를 조합하면?
> (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
Posted by 구차니