์ด ๋ฌธ์„œ์˜ ์›๋ณธ์€ ์™ธ๋ถ€ ์œ„ํ‚ค์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.
#lang racket

(println 'Hello, world!')


1. ๊ฐœ์š”2. ์—ญ์‚ฌ3. ํŠน์ง•4. ์˜ˆ์ œ5. DrRacket6. ์™ธ๋ถ€ ๋งํฌ

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)
(cond
[(< n 2) 1]
[else (+ (fib (- n 1)) (fib (- n 2)))]))

5. DrRacket[ํŽธ์ง‘]

Racket์–ธ์–ด ์ „์šฉ IDE๋กœ ์ฒ˜์Œ์—” C++๋กœ ๊ตฌํ˜„๋˜์—ˆ์œผ๋‚˜ ๋ฒ„์ „ 5.0๋ถ€ํ„ฐ๋Š” Racket์œผ๋กœ ๋‹ค์‹œ ์“ฐ์—ฌ์กŒ๋‹ค.
์œˆ๋„, macOS, Linux ๋“ฑ ๊ฑฐ์˜ ๋ชจ๋“  ํ”Œ๋žซํผ์„ ์ง€์›ํ•œ๋‹ค.
์ต์ˆ™ํ•ด์ง€๋ฉด ๊ฝค ์“ธ๋งŒํ•˜๋‹ค. ํŠนํžˆ ์ด IDE์˜ ๊ฐ€์žฅ ํŽธํ•œ ์  ์ค‘ ํ•˜๋‚˜๋Š” ๊ด„ํ˜ธ๋ฅผ ์ž๋™์œผ๋กœ ๋‹ซ์•„์ค€๋‹ค. Scheme๊ณ„์—ด ์–ธ์–ด์—์„œ๋Š” ๋Œ€๊ด„ํ˜ธ, ์ค‘๊ด„ํ˜ธ, ์†Œ๊ด„ํ˜ธ ๋ชจ๋‘๊ฐ€ ์“ฐ์ด๋Š”๋ฐ ๊ทธ๊ฒŒ ์—ฌ๋Ÿฌ๊ฐœ ์Œ“์ผ ๊ฒฝ์šฐ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๋ ‡๊ฒŒ ์จ๋†“์œผ๋‹ˆ๊นŒ ๋ฌด์Šจ ์†Œ๋ฆฐ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ผ๋‹จ ์จ๋ณด๋ฉด ์•ˆ๋‹ค (...)

6. ์™ธ๋ถ€ ๋งํฌ[ํŽธ์ง‘]

๋ผ์ผ“ ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€ https://racket-lang.org/