최원태
가입: 2006년 9월 16일 올린 글: 369
|
올려짐: 2008년9월25일 10:54 주제: let이 무엇일까요? |
|
|
코드: |
;let example
(let
((name1 expr1)
(name2 expr2)
(name3 expr3))
expr4)
;desugared let
((lambda (name1 name2 name3)
expr4)
expr2
expr3
expr4) |
let은 name scope을 만드는 역할을 합니다.
let의 첫번째 인자 자리에는 name과 expr의 pair가 들어있는 리스트가 있죠?
먼저 이것들은 environtment에 쭉 더해줍니다.
그리고 두번째 인자를 name들이 추가된 environment하에서 실행시킵니다.
사실은 두 번째 코드(desugared version)과 의미가 같지요 |
|