์ด ๋ฌธ์์ ์๋ณธ์ ์ธ๋ถ ์ํค์์ ๊ฐ์ ธ์์ต๋๋ค.
#lang racket (println 'Hello, world!')
1. ๊ฐ์[ํธ์ง]
LISP/Scheme ๊ณ์ด ์ธ์ด ์ค ํ๋์ธ ๋ฒ์ฉ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๋ค. Racket ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์์ฑ, ๊ตฌํ, ๋ฐ ๋์์ธ์ ์ต์ ํ ๋ ์ธ์ด์ด๋ค. Racket์ ์คํฌ๋ฆฝํ
, GUI ์ ํ๋ฆฌ์ผ์ด์
์ ํฌํจํ ๋ฒ์ฉ ์ ํ๋ฆฌ์ผ์ด์
ํ๋ก๊ทธ๋๋ฐ, ๊ต์ก์ฉ ๋ฐ ์ฐ๊ตฌ์ฉ ์ธ์ด๋ก ๋ง์ด ์ฐ์ธ๋ค. ์ด ์ธ์ด๋ฅผ ๋ง๋ ์ฌ๋ ์ค ํ๋์ธ Robby Findler๋ ์ด๊ฑธ ์จ์ Lecture์ ์ฐ๋ Slide๋ฅผ ๋ง๋ ๋ค
2. ์ญ์ฌ[ํธ์ง]
1990๋
๋ ์ค๋ฐ์ ๋ฏธ๊ตญ ๋ผ์ด์ค ๋ํ์ ๊ต์ Matthias Felleison๊ณผ ๋ฐ์ฌํ์ ํ์๋ค์ด์๋ Matthew Flatt, Robby Findler, ๋ฐ Shriram Krishnamurthi๊ฐ ๊ต์ก์ฉ ์ธ์ด๋ก ์ฐ๊ธฐ ์ํด Scheme์ ๊ธฐ๋ฐ์ผ๋ก ํ ์ ์ธ์ด๋ฅผ ๊ฐ๋ฐํ๊ธฐ๋ก ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์ธ์ด๋ฅผ ์ํ ์ ์ฉ IDE์ธ DrRacket์ ๊ฐ๋ฐํ๊ฒ ๋๋ค. ์ฒ์ ๊ฐ๋ฐ์ ์์ํ๊ณ ๋ง๋ ์ธ์ด์ ์ด๋ฆ์ PLT Racket์ด์์ผ๋ 2010๋
6์์ ํ์ฌ ์ธ์ด์ธ Racket์ผ๋ก ๋ณ๊ฒฝ๋์๋ค.
3. ํน์ง[ํธ์ง]
Racket์ด ๋ค๋ฅธ LISP ๊ณ์ด ์ธ์ด์ ๋น๊ตํด์ ๋ค๋ฅธ ์ ์ ํน์ ์ ์ ์ฐํ ๋งคํฌ๋ก์ ํ์ฅ์ฑ์ด๋ผ๊ณ ํ ์ ์๋ค. ์ด๋ ๊ฒ ๋ง๋ค์ด์ง ๋ชจ๋๋ค์ Racket ๊ธฐ๋ณธ ์ธ์ด์ syntax๋ฅผ overrideํ๊ฒ ๋๋ค. ์ผ๋จ ๋ชจ๋์ ๊ทธ ์์ฒด๊ฐ ํ ์ธ์ด๋ก ๋ณผ ์ ์์ผ๋ฏ๋ก ๊ทธ๊ฑธ #lang ____ ์ด๋ฐ ํ์์ผ๋ก ๊ฐ์ ธ์์ ์ฐ๊ฒ ๋ ๊ฒฝ์ฐ ์ธ์ด ์์ฒด๋ฅผ ๋ฐ๊ฟ๋ฒ๋ฆฌ๋ ๊ฒ ๊ฐ๋ฅํ๋ค. (๊ทน๋จ์ ์ธ ์์๋ก, ์ด๋ฅผ ์ด์ฉํ์ฌ racket์์ python ์ฝ๋๋ฅผ ๋๋ฆฌ๊ฒ ํด์ฃผ๋ ๋ชจ๋๋ ์๋ค!)
4. ์์ [ํธ์ง]
๋ฌธ๋ฒ ์์ฒด๋ Common Lisp/ Scheme ๋ฑ์ ํฌ๊ฒ ๋ฒ์ด๋์ง ์๋๋ค.
๋ชจ๋ ์ธ์ด๋ ์ผ๋จ ํฌ๋ก์๋๋ถํฐ ์ถ๋ ฅํ๋ค.
(print "Hello World\n")
Common Lisp ์์์ ํจ์๋ฅผ ์ ์ํ๋ ํค์๋์ธ defun ๋์ define ์ ์ด๋ค.
ํผ๋ณด๋์น ์ซ์๋ฅผ ๋ฆฌํดํ๋ ์ฌ๊ทํจ์๋ฅผ ๊ตฌํํ๋ฉด:
(define fib (n)
๋ชจ๋ ์ธ์ด๋ ์ผ๋จ ํฌ๋ก์๋๋ถํฐ ์ถ๋ ฅํ๋ค.
(print "Hello World\n")
Common Lisp ์์์ ํจ์๋ฅผ ์ ์ํ๋ ํค์๋์ธ defun ๋์ define ์ ์ด๋ค.
ํผ๋ณด๋์น ์ซ์๋ฅผ ๋ฆฌํดํ๋ ์ฌ๊ทํจ์๋ฅผ ๊ตฌํํ๋ฉด:
(define fib (n)
(cond
[(< n 2) 1]
[else (+ (fib (- n 1)) (fib (- n 2)))]))
[else (+ (fib (- n 1)) (fib (- n 2)))]))
5. DrRacket[ํธ์ง]
Racket์ธ์ด ์ ์ฉ IDE๋ก ์ฒ์์ C++๋ก ๊ตฌํ๋์์ผ๋ ๋ฒ์ 5.0๋ถํฐ๋ Racket์ผ๋ก ๋ค์ ์ฐ์ฌ์ก๋ค.
์๋, macOS, Linux ๋ฑ ๊ฑฐ์ ๋ชจ๋ ํ๋ซํผ์ ์ง์ํ๋ค.
์ต์ํด์ง๋ฉด ๊ฝค ์ธ๋งํ๋ค. ํนํ ์ด IDE์ ๊ฐ์ฅ ํธํ ์ ์ค ํ๋๋ ๊ดํธ๋ฅผ ์๋์ผ๋ก ๋ซ์์ค๋ค. Scheme๊ณ์ด ์ธ์ด์์๋ ๋๊ดํธ, ์ค๊ดํธ, ์๊ดํธ ๋ชจ๋๊ฐ ์ฐ์ด๋๋ฐ ๊ทธ๊ฒ ์ฌ๋ฌ๊ฐ ์์ผ ๊ฒฝ์ฐ ๋ถ๊ฐ๋ฅํ๋ค. ์ด๋ ๊ฒ ์จ๋์ผ๋๊น ๋ฌด์จ ์๋ฆฐ์ง ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ผ๋จ ์จ๋ณด๋ฉด ์๋ค (...)
์๋, macOS, Linux ๋ฑ ๊ฑฐ์ ๋ชจ๋ ํ๋ซํผ์ ์ง์ํ๋ค.
์ต์ํด์ง๋ฉด ๊ฝค ์ธ๋งํ๋ค. ํนํ ์ด IDE์ ๊ฐ์ฅ ํธํ ์ ์ค ํ๋๋ ๊ดํธ๋ฅผ ์๋์ผ๋ก ๋ซ์์ค๋ค. Scheme๊ณ์ด ์ธ์ด์์๋ ๋๊ดํธ, ์ค๊ดํธ, ์๊ดํธ ๋ชจ๋๊ฐ ์ฐ์ด๋๋ฐ ๊ทธ๊ฒ ์ฌ๋ฌ๊ฐ ์์ผ ๊ฒฝ์ฐ ๋ถ๊ฐ๋ฅํ๋ค. ์ด๋ ๊ฒ ์จ๋์ผ๋๊น ๋ฌด์จ ์๋ฆฐ์ง ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ผ๋จ ์จ๋ณด๋ฉด ์๋ค (...)
6. ์ธ๋ถ ๋งํฌ[ํธ์ง]
๋ผ์ผ ๊ณต์ ํํ์ด์ง https://racket-lang.org/