SICP๋ฅผ ์ œ๋Œ€๋กœ ํŒŒ๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.


SCIP๋ฅผ ๋‹ค ์ฝ์€๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ, ์ฒ˜์Œ ๋ถ€๋ถ„์„ ์ฝ๊ณ  ๋А๋‚€์ ์€

์ด ์ฑ…์€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜๋Š”๊ฐ€? ์— ํฌ์ปค์Šค๋ฅผ ๋งž์ถ˜ ์ฑ…์ด๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค.

์ฒ˜์Œ ์ฑ•ํ„ฐ์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ๋Œ€ํ•œ ์„ค๋ช…์„ ํ•˜๋Š”๋ฐ, ์š”์•ฝํ•˜์ž๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.


๊ฐ•๋ ฅํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ผ๋Š”๊ฒƒ์€ ์ปดํ“จํ„ฐ์—๊ฒŒ ์ง€์‹œ๋ฅผ ๋‚ด๋ฆฌ๋Š” ๋„๊ตฌ๋กœ์„œ์˜ ๊ธฐ๋Šฅ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ,

์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์‚ฌ๋žŒ์˜ ์•„์ด๋””์–ด๋ฅผ ์ •๋ฆฌํ•ด ์ฃผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ธฐ๋Šฅ๋„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ ์–ธ์–ด๋ฅผ ๋ฌ˜์‚ฌํ•  ๋•Œ๋Š” ์ด ์–ธ์–ด๊ฐ€ ์–ด๋– ํ•œ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ๊ฐ„๋‹จํ•œ ์•„์ด๋””์–ด๋ฅผ ๋ณต์žกํ•œ ์•„์ด๋””์–ด๋กœ ๊ตฌ์„ฑํ•˜๋Š”์ง€ ํŠนํžˆ ์ฃผ์˜ํ•ด์„œ ๋ด์•ผ ํ•œ๋‹ค.


๋ชจ๋“  ๊ฐ•๋ ฅํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” ์„ธ๊ฐ€์ง€ ๋ฉ”์นด๋‹ˆ์ฆ˜์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

1. ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ ์ต์Šคํ”„๋ ˆ์…˜ -> ๊ทธ ์–ธ์–ด๊ฐ€ ํ‘œํ˜„ํ•˜๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์—”ํ‹ฐํ‹ฐ

2. ์กฐํ•ฉ -> ๋‹จ์ˆœํ•œ ๊ฒƒ๋“ค์„ ์–ด๋–ป๊ฒŒ ์กฐํ•ฉํ•ด ๋ณต์žกํ•œ ์š”์†Œ๋“ค์„ ๋งŒ๋“œ๋Š”๊ฐ€

3. ์ถ”์ƒํ™” -> ๋ณต์žกํ•œ ์š”์†Œ๋“ค์ด ์–ด๋–ป๊ฒŒ ์ด๋ฆ„์ง€์–ด์ง€๊ณ  ๋‹ค๋ฃจ์–ด์ง€๋Š”๊ฐ€


์‚ฌ๋žŒ์ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ๋•Œ๋Š” ์ฃผ๋กœ ๋‘๊ฐ€์ง€๋ฅผ ๋‹ค๋ฃจ๊ฒŒ ๋œ๋‹ค.

1. ๋ฐ์ดํ„ฐ -> ์šฐ๋ฆฌ๊ฐ€ ์กฐ์ž‘ํ•˜๊ธฐ ์›ํ•˜๋Š” ๊ฒƒ๋“ค

2. ํ”„๋กœ์‹œ์ € -> ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์กฐ์ž‘ํ•˜๋Š”์ง€ ๋ฒ•์น™๋“ค.


์ฆ‰, ์‚ฌ๋žŒ์ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

1. ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ ๊ฐ€๋Šฅ ํ•  ๊ฒƒ.

2. ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ ํ”„๋กœ์‹œ์ €๋ฅผ ํ‘œํ˜„ ๊ฐ€๋Šฅํ•  ๊ฒƒ.

3. ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ ๋ฐ์ดํ„ฐ์™€ ํ”„๋กœ์‹œ์ €๋ฅผ ์กฐํ•ฉํ•˜๊ณ  ์ถ”์ƒํ™” ํ•  ์ˆ˜ ์žˆ์„๊ฒƒ.


์ด๋ ‡๊ฒŒ SCIP ์ฑ…์—์„œ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ์„ ์ •๋ฆฌํ•˜๊ณ , ์™œ ์ด๊ฒƒ๋“ค์„ ์ดํ•ดํ•ด์•ผ ํ•˜๋Š”์ง€, ์™œ ์ค‘์š”ํ•œ์ง€๋ฅผ ๋จผ์ € ์„ค๋ช…ํ•˜๊ณ  ์žˆ๋‹ค.


๊ทธ ๋’ค ์ฑ•ํ„ฐ์—์„œ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ด ๋˜๋Š” ๊ฐœ๋…๋“ค์„ ์„ค๋ช…ํ•œ๋‹ค.


1. expression

2. combination

3. operator

4. arguements


์ด๊ฒƒ๋“ค์˜ ์„ค๋ช…์ด ๋๋‚œ ๋’ค, ๊ฐ€์žฅ ๊ธฐ์ดˆ๊ฐ€ ๋˜๋Š” ์ถ”์ƒํ™”์˜ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•œ๋‹ค.

Naming.


์œ„์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…๋“ค๊ณผ ๊ธฐ๋ณธ์ ์ธ ์ถ”์ƒํ™”๋ฅผ ์กฐํ•ฉํ•˜๋Š”๊ฒƒ ๋งŒ์œผ๋กœ๋„, ๊ฝค๋‚˜ ๋ณต์žกํ•œ ์ˆ˜์‹์„ ๊ฐ„๋‹จํžˆ ๋งŒ๋“ค์–ด ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

์›์˜ ๋‘˜๋ ˆ๋ฅผ ๊ตฌํ•˜๋Š” ์‹์„ ์˜ˆ๋กœ ๋“ค๋ฉด


3.14 ๋ผ๋Š” value๋ฅผ pi ๋กœ ๋„ค์ด๋ฐ ํ•ด์„œ variable ์„ ๋งŒ๋“ค๊ณ ,

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ radius๋ฅผ ๋งŒ๋“ค๊ณ 

๊ทธ๋ฆฌ๊ณ  (* 2 pi radius) ๋ผ๋Š” ์ฝค๋น„๋„ค์ด์…˜์„ circumference ๋กœ ๋„ค์ด๋ฐํ•ด์„œ ์ถ”์ƒํ™” ํ–ˆ๋‹ค.


์—ฌ๊ธฐ๊นŒ์ง€ ๋Œ€์ถฉ ์ฝ์€ ๊ฐ์ƒ์œผ๋กœ๋Š”ย 

๊ทธ๋ƒฅ ๋Œ€์ถฉ ์ด๊ฒŒ ์ •์˜๊ฐ€ ์ด๊ฑฐ๊ณ  ์ •์˜๊ฐ€ ์ €๊ฑฐ๊ณ  ํ•˜๊ณ  ์ฝ๋Š”๋‹ค๋ฉด ๊ทธ๋ƒฅ ํœ™ํœ™ ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š”๋ฐย 

์™œ ์ด ์ฑ…์ด ์ด๊ฒƒ๋“ค์„ ์„ค๋ช…ํ•˜๊ณ  ์žˆ๊ณ , ์–ด๋– ํ•œ ์‚ฌ๊ณ ์˜ ํ๋ฆ„์„ ๊ฐ€์ง€๋Š”์ง€ ์ƒ๊ฐํ•˜๋ฉฐ ์ฝ์„ ๋•Œ๋Š” ๊ฝค๋‚˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค๋Š”๊ฑฐ.ย 



์ฐธ๊ณ ๋กœ ํ˜„์žฌ ์“ฐ๊ณ  ์žˆ๋Š” ์–ธ์–ด๋Š” Lisp Scheme ์ด๊ณ 

๋‹ค์šด๋กœ๋“œ๋Š” ์—ฌ๊ธฐ

https://download.racket-lang.org/

SCIP์šฉ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๊ธฐ์— ์žˆ๋‹ค.

https://docs.racket-lang.org/sicp-manual/index.html