Skip to content

Commit

Permalink
update: ch03/
Browse files Browse the repository at this point in the history
  • Loading branch information
netpyoung committed Jan 26, 2024
1 parent 4666f90 commit 3296c49
Show file tree
Hide file tree
Showing 5 changed files with 111 additions and 103 deletions.
7 changes: 3 additions & 4 deletions src/ch03/lesson_07.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,13 +54,12 @@
;;=> 92
```

:TODO(pyoung)
ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν• λ•Œ μΈμˆ˜λ“€μ€, μˆœμ„œμ— 맞게 인자 이름에 바인딩 λ©λ‹ˆλ‹€. λ¦¬μŠ€ν”„λŠ” 인자 μ΄λ¦„μ˜ list에 λŒ€ν•œ λͺ‡λͺ‡ 선택적인 λ³€ν˜•variations을 μ§€λ‹™λ‹ˆλ‹€. κ³΅μ‹μ μœΌλ‘œ μ΄λŸ¬ν•œ 리슀트λ₯Ό lambda 리슀트라 λΆ€λ¦…λ‹ˆλ‹€ - 21μž₯[p 198]μ—μ„œ μ΄κ²ƒμ˜ λ‹€λ₯Έ κΈ°λŠ₯듀에 λŒ€ν•΄ μ‚΄νŽ΄ λ³Ό κ²ƒμž…λ‹ˆλ‹€.
ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν• λ•Œ μΈμˆ˜λ“€μ€, μˆœμ„œμ— 맞게 인자 이름에 바인딩 λ©λ‹ˆλ‹€. λ¦¬μŠ€ν”„λŠ” 인자 μ΄λ¦„μ˜ λ¦¬μŠ€νŠΈλŠ” μ—¬λŸ¬κ°€μ§€ λ³€ν˜•λ“€μ΄ μžˆμŠ΅λ‹ˆλ‹€. κ³΅μ‹μ μœΌλ‘œ μ΄λŸ¬ν•œ λ³€ν˜• 리슀트λ₯Ό λžŒλ‹€ 리슀트라 λΆ€λ¦…λ‹ˆλ‹€ - 21μž₯[p 198]μ—μ„œ μ΄κ²ƒμ˜ λ‹€λ₯Έ κΈ°λŠ₯듀에 λŒ€ν•΄ μ‚΄νŽ΄ λ³Ό κ²ƒμž…λ‹ˆλ‹€.


## LAMBDA - 이름 μ—†λŠ” ν•¨μˆ˜ μ •μ˜

λ•Œλ‘œλŠ” ν”„λ‘œκ·Έλž¨μ—μ„œ 단 ν•œκ³³μ—μ„œλ§Œ μ“°μ΄λŠ” ν•¨μˆ˜κ°€ ν•„μš”ν•  κ²ƒμž…λ‹ˆλ‹€. `defun`으둜 ν•¨μˆ˜λ₯Ό λ§Œλ“€μ–΄ 이λ₯Ό ν•œλ²ˆ ν˜ΈμΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ•Œλ•Œλ‘œ, ν•¨μˆ˜μ— λ‚˜μ€‘μ— ν”„λ‘œκ·Έλž¨μ„ μ½μ„λ•Œ 도움을 μ£ΌλŠ” descriptive 이름을 쀄 수 μžˆμœΌλ―€λ‘œ, μ΄λŠ” ν•  수 μžˆλŠ” μ΅œμ„ μ΄ λ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ’…μ’… μ—¬λŸ¬λΆ„μ΄ ν•„μš”ν•œ ν•¨μˆ˜λŠ” μ•„μ£Ό μ‚¬μ†Œν•˜κ±°λ‚˜ μ•„μ£Ό λͺ…λ°±ν•˜μ—¬, 이름을 짓고싢지 μ•Šκ±°λ‚˜ 이전에 이름이 μ“°μ˜€λŠ”μ œ λŒ€ν•΄ κ±±μ •ν•˜μ§€ μ•Šκ³ μž ν•  κ²ƒμž…λ‹ˆλ‹€. 이와 같은 μƒν™©μ—μ„œ, λ¦¬μŠ€ν”„λŠ” `lambda` 폼을 μ΄μš©ν•˜μ—¬ 이름이 뢙여지지 μ•ŠλŠ” ν•¨μˆ˜λ₯Ό λ§Œλ“€ 수 있게 ν•©λ‹ˆλ‹€. `lambda` 폼은 마치 이름이 μ—†λŠ” `defun` 폼처럼 λ³΄μž…λ‹ˆλ‹€:
λ•Œλ‘œλŠ” ν”„λ‘œκ·Έλž¨μ—μ„œ 단 ν•œκ³³μ—μ„œλ§Œ μ“°μ΄λŠ” ν•¨μˆ˜κ°€ ν•„μš”ν•  κ²ƒμž…λ‹ˆλ‹€. `defun`으둜 ν•¨μˆ˜λ₯Ό λ§Œλ“€μ–΄ 이λ₯Ό ν•œλ²ˆλ§Œ ν˜ΈμΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€. 그리고 λ•Œλ•Œλ‘œ, λ‚˜μ€‘μ— ν”„λ‘œκ·Έλž¨μ„ μ½μ„λ•Œ 도움을 μ£ΌλŠ” 잘 μ§œμ—¬μ§„ 이름을 ν•¨μˆ˜μ— λΆ€μ—¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ’…μ’… μ—¬λŸ¬λΆ„μ΄ ν•„μš”ν•œ ν•¨μˆ˜λŠ” μ•„μ£Ό μ‚¬μ†Œν•˜κ±°λ‚˜ μ•„μ£Ό λͺ…λ°±ν•˜μ—¬ 이름을 ꡳ이 지을 ν•„μš”κ°€ μ—†κ±°λ‚˜, 이전에 이름이 μ“°μ˜€λŠ”μ§€μ— λŒ€ν•΄ κ±±μ •ν•˜μ§€ μ•Šκ³  싢을 λ•Œκ°€ μžˆμ„ κ²ƒμž…λ‹ˆλ‹€. 이와 같은 μƒν™©μ—μ„œ, λ¦¬μŠ€ν”„μ—μ„  `lambda` 폼을 μ΄μš©ν•˜μ—¬ 이름 μ—†λŠ” ν•¨μˆ˜λ₯Ό λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. `lambda` 폼은 마치 이름이 μ—†λŠ” `defun` 폼처럼 λ³΄μž…λ‹ˆλ‹€:

``` lisp
(lambda (a b c x)
Expand All @@ -69,7 +68,7 @@
c))
```

`lambda` 폼을 평가할 수 μ—†μŠ΅λ‹ˆλ‹€; μ΄λŠ” λ¦¬μŠ€ν”„κ°€ ν•¨μˆ˜λ₯Ό 찾을 수 μžˆλ‹€κ³  μ˜ˆμƒν•˜λŠ” κ³³μ—μ„œ 보여야 ν•©λ‹ˆλ‹€ - 보톡 form의 첫번째 μ˜€μ†Œλ‘œ;
μ—¬κΈ°μ„œ `lambda` 폼을 평가할 수 μ—†μŠ΅λ‹ˆλ‹€; μ΄λŠ” λ¦¬μŠ€ν”„κ°€ ν•¨μˆ˜ 자리라고 μ˜ˆμƒλ˜μ–΄ μ§€λŠ” κ³³μ—μ„œλ§Œ 보여야 ν•©λ‹ˆλ‹€ - 보톡 폼의 첫번째 μš”μ†Œλ‘œ;

``` lisp
(lambda (a b c x)
Expand Down
33 changes: 17 additions & 16 deletions src/ch03/lesson_08.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@

## λ§€ν¬λ‘œλŠ” 값이 μ•„λ‹Œ 폼을 λ°˜ν™˜ν•œλ‹€

맀크둜 λ³Έμ²΄λŠ” 평가될 폼을 λ°˜ν™˜ν•©λ‹ˆλ‹€. λ‹€λ₯Έλ§λ‘œ ν•˜μžλ©΄, 값이 μ•„λ‹Œ 폼을 λ°˜ν™˜ν•˜λŠ” 맀크둜의 본체λ₯Ό μž‘μ„±ν•΄μ•Ό ν•©λ‹ˆλ‹€. λ¦¬μŠ€ν”„κ°€ 맀크둜의 ν˜ΈμΆœμ„ ν‰κ°€ν• λ•Œ, μ΄λŠ” μš°μ„  맀크둜 본체 μ •μ˜λ₯Ό ν‰κ°€ν•˜κ³ , 첫번째 ν‰κ°€μ˜ κ²°κ³Όλ₯Ό ν‰κ°€ν•©λ‹ˆλ‹€ (λΉ„κ΅ν•˜μ—¬, ν•¨μˆ˜μ˜ λ³Έμ²΄λŠ” 값을 λ°˜ν™˜ν•˜λ„λ‘ ν‰κ°€λ©λ‹ˆλ‹€) μ—¬κΈ° μ—¬λŸ¬λΆ„μ΄ κ°€μž₯ μ•Œκ³ μž ν•˜λŠ” 것을 μ„€λͺ…ν•΄μ£ΌλŠ” κ°„λ‹¨ν•œ 맀크둜 쌍이 μžˆμŠ΅λ‹ˆλ‹€:
:TODO(pyoung)
맀크둜 λ³Έμ²΄λŠ” 평가될 폼을 λ°˜ν™˜ν•©λ‹ˆλ‹€. λ‹€λ₯Έλ§λ‘œ ν•˜μžλ©΄, 맀크둜의 본체둜 값이 μ•„λ‹Œ 폼을 λ°˜ν™˜ν•˜λ„λ‘ μž‘μ„±ν•΄μ•Ό ν•©λ‹ˆλ‹€. λ¦¬μŠ€ν”„κ°€ 맀크둜의 ν˜ΈμΆœμ„ ν‰κ°€ν• λ•Œ, μ΄λŠ” μš°μ„  맀크둜 본체 μ •μ˜λ₯Ό ν‰κ°€ν•˜κ³ , 첫번째 ν‰κ°€μ˜ κ²°κ³Όλ₯Ό ν‰κ°€ν•©λ‹ˆλ‹€ (λΉ„κ΅ν•˜μ—¬, ν•¨μˆ˜μ˜ λ³Έμ²΄λŠ” 값을 λ°˜ν™˜ν•˜λ„λ‘ ν‰κ°€λ©λ‹ˆλ‹€) μ—¬κΈ° μ—¬λŸ¬λΆ„μ΄ κ°€μž₯ μ•Œκ³ μž ν•˜λŠ” 것을 μ„€λͺ…ν•΄μ£ΌλŠ” κ°„λ‹¨ν•œ 맀크둜 쌍이 μžˆμŠ΅λ‹ˆλ‹€:

``` lisp
(defmacro setq-literal (place literal)
Expand All @@ -36,31 +37,31 @@ a
;;=> (B)
```

SETQ-LITERALλŠ” μΈμžκ°€ ν‰κ°€λ˜μ§€ μ•ŠλŠ”λ‹€λŠ” 점을 μ œμ™Έν•˜λ©΄ 마치 `setq`처럼 λ™μž‘ν•©λ‹ˆλ‹€(SETQκ°€ 이의 λ‘λ²ˆμ§Έ 인자λ₯Ό ν‰κ°€ν•œλ‹€λŠ” 것을 λͺ…μ‹¬ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€). SETQ-LITERAL의 λ³Έμ²΄λŠ” ("μ—­λ”°μ˜΄ν‘œ"라 λ§ν•˜λŠ”) `둜 μ‹œμž‘ν•˜λŠ” 폼을 μ§€λ…”μŠ΅λ‹ˆλ‹€. μ—­λ”°μ˜΄ν‘œλŠ” μ—­λ”°μ˜΄ν‘œλœ νΌμ—μ„œ μ‰Όν‘œκ°€ λ³΄μΈλ‹€λŠ” 점을 μ œμ™Έν•˜λ©΄ (폼으둜 λ‘˜λŸ¬μ‹ΈμΈ λͺ¨λ“  κ²ƒμ˜ 평가λ₯Ό μˆ¨κΈ°λŠ”)λ”°μ˜΄ν‘œμ²˜λŸΌ ν–‰λ™ν•©λ‹ˆλ‹€.
`setq-literal`λŠ” μΈμˆ˜κ°€ ν‰κ°€λ˜μ§€ μ•ŠλŠ”λ‹€λŠ” 점을 μ œμ™Έν•˜λ©΄ 마치 `setq`처럼 λ™μž‘ν•©λ‹ˆλ‹€(SETQλŠ” 이의 λ‘λ²ˆμ§Έ 인수λ₯Ό ν‰κ°€ν•œλ‹€λŠ” 것을 λͺ…μ‹¬ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€). `SETQ-LITERAL`의 λ³Έμ²΄λŠ” ("μ—­λ”°μ˜΄ν‘œ"라 λ§ν•˜λŠ”) `둜 μ‹œμž‘ν•˜λŠ” 폼을 μ§€λ…”μŠ΅λ‹ˆλ‹€. μ—­λ”°μ˜΄ν‘œλŠ” μ—­λ”°μ˜΄ν‘œλœ νΌμ—μ„œ μ‰Όν‘œκ°€ λ³΄μΈλ‹€λŠ” 점을 μ œμ™Έν•˜λ©΄ (폼으둜 λ‘˜λŸ¬μ‹ΈμΈ λͺ¨λ“  κ²ƒμ˜ 평가λ₯Ό μˆ¨κΈ°λŠ”)λ”°μ˜΄ν‘œμ²˜λŸΌ ν–‰λ™ν•©λ‹ˆλ‹€.

λ”°λΌμ„œ μœ„μ˜ `(SETQ-LITERAL A B)`λ₯Ό ν˜ΈμΆœν•¨μ— μžˆμ–΄, 무슨 일이 λ²Œμ–΄μ§€λŠ”μ§€κ°€ μ—¬κΈ° λ‚˜μ™€ μžˆμŠ΅λ‹ˆλ‹€:

1. PLACEλ₯Ό symbol A에 bindν•œλ‹€.
2. LITERALλ₯Ό symbol B에 bindν•œλ‹€.
1. PLACEλ₯Ό 심볼 A에 bindν•œλ‹€.
2. LITERALλ₯Ό 심볼 B에 bindν•œλ‹€.
3. λ‹€μŒ 단계λ₯Ό 거처 `(SETQ ,PLACE ',LITERAL) 본체λ₯Ό ν‰κ°€ν•œλ‹€:
1. symbol Aμ–»κΈ° μœ„ν•΄ PLACEλ₯Ό ν‰κ°€ν•œλ‹€.
2. symbol Bμ–»κΈ° μœ„ν•΄ LITERALλ₯Ό ν‰κ°€ν•œλ‹€.
3. form (SETQ A 'B)λ₯Ό λ°˜ν™˜ν•œλ‹€.
4. form (SETQ A 'B)λ₯Ό ν‰κ°€ν•œλ‹€.
1. 심볼 Aμ–»κΈ° μœ„ν•΄ PLACEλ₯Ό ν‰κ°€ν•œλ‹€.
2. 심볼 Bμ–»κΈ° μœ„ν•΄ LITERALλ₯Ό ν‰κ°€ν•œλ‹€.
3. 폼 (SETQ A 'B)λ₯Ό λ°˜ν™˜ν•œλ‹€.
4. 폼 (SETQ A 'B)λ₯Ό ν‰κ°€ν•œλ‹€.

λ°˜ν™˜λœ νΌμ—μ„œ μ—­λ”°μ˜΄ν‘œλ‚˜ μ‰Όν‘œλŠ” 보이지 μ•ŠμŠ΅λ‹ˆλ‹€. SETQ-LITERAL ν˜ΈμΆœμ—μ„œ Aλ‚˜ Bκ°€ ν‰κ°€λ˜μ§€ μ•Šμ§€λ§Œ μ„œλ‘œ λ‹€λ₯Έ 이유 λ•Œλ¬Έμž…λ‹ˆλ‹€. AλŠ” SETQ의 첫번째 인자처럼 보이기에 ν‰κ°€λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. BλŠ” macro에 μ˜ν•΄ λ°˜ν™˜λœ formμ•žμ— λ”°μ˜΄ν‘œκ°€ 보이기에 ν‰κ°€λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€
λ°˜ν™˜λœ νΌμ—μ„œ μ—­λ”°μ˜΄ν‘œλ‚˜ μ‰Όν‘œλŠ” 보이지 μ•ŠμŠ΅λ‹ˆλ‹€. `SETQ-LITERAL` ν˜ΈμΆœμ—μ„œ `A`λ‚˜ `B`κ°€ ν‰κ°€λ˜μ§€ μ•Šμ§€λ§Œ μ„œλ‘œ λ‹€λ₯Έ 이유 λ•Œλ¬Έμž…λ‹ˆλ‹€. `A`λŠ” `SETQ`의 첫번째 인자처럼 보이기에 ν‰κ°€λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. `B`λŠ” λ§€ν¬λ‘œμ— μ˜ν•΄ λ°˜ν™˜λœ νΌμ•žμ— λ”°μ˜΄ν‘œκ°€ 보이기에 ν‰κ°€λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€

`(REVERSE-CONS NIL A)`의 λ™μž‘μ€ μœ μ‚¬ν•©λ‹ˆλ‹€:

1. bind RESTλ₯Ό symbol NIL에 bindν•œλ‹€.
2. bind FIRSTλ₯Ό symbol A에 bindν•œλ‹€.
1. bind RESTλ₯Ό 심볼 NIL에 bindν•œλ‹€.
2. bind FIRSTλ₯Ό 심볼 A에 bindν•œλ‹€.
3. λ‹€μŒ 단계λ₯Ό 거처, `(CONS ,FIRST ,REST) 본체λ₯Ό ν‰κ°€ν•œλ‹€:
1. symbol Aλ₯Ό μ–»κΈ° μœ„ν•΄ FIRSTλ₯Ό ν‰κ°€ν•œλ‹€.
2. symbol NILλ₯Ό μ–»κΈ° μœ„ν•΄ RESTλ₯Ό ν‰κ°€ν•œλ‹€.
3. form (CONS A NIL)λ₯Ό λ°˜ν™˜ν•œλ‹€.
4. form (CONS A NIL)을 ν‰κ°€ν•œλ‹€.
1. 심볼 Aλ₯Ό μ–»κΈ° μœ„ν•΄ FIRSTλ₯Ό ν‰κ°€ν•œλ‹€.
2. 심볼 NILλ₯Ό μ–»κΈ° μœ„ν•΄ RESTλ₯Ό ν‰κ°€ν•œλ‹€.
3. 폼 (CONS A NIL)λ₯Ό λ°˜ν™˜ν•œλ‹€.
4. 폼 (CONS A NIL)을 ν‰κ°€ν•œλ‹€.

CONSκ°€ 이의 인자λ₯Ό ν‰κ°€ν•˜λ©°, 맀크둜 λ³Έμ²΄λŠ” 두 μΈμžμ— λ”°μ˜΄ν‘œλ₯Ό 뢙이지 μ•Šμ•˜κΈ°μ—, `reverse-cons`의 두 μΈμžλŠ” ν‰κ°€λ©λ‹ˆλ‹€. AλŠ” symbol B둜 ν‰κ°€λ˜λ©°, NIL은 μžκΈ°μžμ‹ μœΌλ‘œ ν‰κ°€λ©λ‹ˆλ‹€.
CONSκ°€ 이의 인자λ₯Ό ν‰κ°€ν•˜λ©°, 맀크둜 λ³Έμ²΄λŠ” 두 μΈμžμ— λ”°μ˜΄ν‘œλ₯Ό 뢙이지 μ•Šμ•˜κΈ°μ—, `reverse-cons`의 두 μΈμžλŠ” ν‰κ°€λ©λ‹ˆλ‹€. `A`λŠ” 심볼 `B`둜 ν‰κ°€λ˜λ©°, `NIL`은 μžκΈ°μžμ‹ μœΌλ‘œ ν‰κ°€λ©λ‹ˆλ‹€.

μ—¬λŸ¬λΆ„μ΄ ν‰κ°€λ˜κΈ°μ „μ— 맀크둜 본체가 μ–΄λ–»κ²Œ λ³΄μ—¬μ§€λŠ”μ§€ ν™•μΈν•˜κ³ μž ν•œλ‹€λ©΄, `macroexpand` ν•¨μˆ˜λ₯Ό μ΄μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

Expand Down
13 changes: 6 additions & 7 deletions src/ch03/lesson_09.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,18 +24,17 @@
;;=> :THAT
```

폼의 평가에 μ˜ν•΄ μƒμ„±λœ μ—¬λŸ¬ 라인이으둜, μ–Όλ§ˆλ‚˜ λ§Žμ€ 값이 λ°˜ν™˜λ˜μ—ˆλŠ”μ§€ λ³΄μ•˜μŠ΅λ‹ˆλ‹€. μœ„μ˜ μ˜ˆμ œμ—μ„œ 3개의 `values` νΌμ—μ„œ 각각 0개, 1개, 2개의 값을 μƒμ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
폼의 평가에 μ˜ν•΄ μƒμ„±λœ μ—¬λŸ¬ 라인이으둜 μ–Όλ§ˆλ‚˜ λ§Žμ€ 값이 λ°˜ν™˜λ˜μ—ˆλŠ”μ§€ λ³΄μ•˜μŠ΅λ‹ˆλ‹€. μœ„μ˜ μ˜ˆμ œμ—μ„œ 3개의 `values` νΌμ—μ„œ 각각 0개, 1개, 2개의 값을 μƒμ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

`values`λŠ” ν•¨μˆ˜μ΄λ©°, λ”°λΌμ„œ 인자λ₯Ό ν‰κ°€ν•©λ‹ˆλ‹€.


## λͺ‡λͺ‡ νŠΉμˆ˜ν•œ 폼은 μ—¬λŸ¬κ°œμ˜ 값을 받을 수 μžˆλ‹€.

:TODO(pyoung)
ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨μ—μ„œ λ‹€μˆ˜μ˜ κ°’μœΌλ‘œ 무얼 ν•˜κΈΈ μ›ν•˜μ‹­λ‹ˆκΉŒ? κ°€μž₯ 기본적인 λ™μž‘μ€ :
μ—¬λŸ¬κ°œμ˜ 값듀을 λ‹€λ£°λ €λ©΄ 무엇을 ν•΄μ•Όν• κΉŒμš”? κ°€μž₯ 기본적인 λ™μž‘μœΌλ‘œλŠ” :

1. 각 값듀을 κ°œλ³„ μ‹¬λ³Όλ‘œ λ°”μΈλ“œν•œλ‹€, ν˜Ήμ€
2. 값듀을 리슀트둜 λͺ¨μ€λ‹€.
1. 각 값듀을 κ°œλ³„ μ‹¬λ³Όλ‘œ λ°”μΈλ“œν•œλ‹€
2. ν˜Ήμ€ 값듀을 리슀트둜 λͺ¨μ€λ‹€.

각 값듀을 κ°œλ³„ μ‹¬λ³Όλ‘œ λ°”μΈλ“œν•˜κΈ° μœ„ν•΄ `multiple-value-bind`λ₯Ό μ΄μš©ν•©λ‹ˆλ‹€:

Expand Down Expand Up @@ -91,9 +90,9 @@
;;=> 8
```

ν•¨μˆ˜μ™€ `lambda` 본체의 κ²½μš°μ—”, "암묡적인 PROGN"λΌλŠ” κ²ƒμœΌλ‘œ λΆ€ν„° λ‹€μˆ˜μ˜ 값이 λ°˜ν™˜λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ΄λŠ”, 본체가 λ‹€μˆ˜μ˜ 폼을 포함할 수 있으며, 였직 λ§ˆμ§€λ§‰ form의 값이 λ°˜ν™˜λ κ±°λΌκ³ , λ©‹μ§€κ²Œ λ§ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€.
ν•¨μˆ˜μ™€ `lambda` 본체의 κ²½μš°μ—”, "μ•”μ‹œμ  `PROGN`"라 λΆˆλ¦¬λŠ” λ¬΄μ–Έκ²ƒμœΌλ‘œλΆ€ν„° λ‹€μˆ˜μ˜ 값이 λ°˜ν™˜λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ΄λŠ”, 본체가 λ‹€μˆ˜μ˜ 폼을 포함할 수 있으며, μ΅œμ’…μ μœΌλ‘œ λ§ˆμ§€λ§‰ 폼의 값이 λ°˜ν™˜λ©λ‹ˆλ‹€.

μ—¬λŸ¬λΆ„μ€ μ΄λŸ¬ν•œ 행동을 μ›ν• λ•Œ `progn` μŠ€νŽ˜μ‹€ 폼을 μ΄μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. `(PROGN form1 form2 ... formN)` 은 μˆœμ„œλŒ€λ‘œ `form1`λΆ€ν„° `formN`κΉŒμ§€ ν‰κ°€ν•˜κ³ , μ΅œμ’…μ μœΌλ‘œ `formN`의 값을 λ°˜ν™˜ν•©λ‹ˆλ‹€.
μœ„μ™€κ°™μ€ 행동을 μ›ν• λ•Œ `progn` μŠ€νŽ˜μ‹€ 폼을 μ΄μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. `(PROGN form1 form2 ... formN)` 은 μˆœμ„œλŒ€λ‘œ `form1`λΆ€ν„° `formN`κΉŒμ§€ ν‰κ°€ν•˜κ³ , μ΅œμ’…μ μœΌλ‘œ `formN`의 값을 λ°˜ν™˜ν•©λ‹ˆλ‹€.


## 짚고 λ„˜μ–΄κ°€κΈ°
Expand Down
Loading

0 comments on commit 3296c49

Please sign in to comment.