TL;DR

๊ต์œก์šฉ์œผ๋กœ ๋งŽ์ด ์“ฐ์ด๋Š” ์Šคํ‚ด ๋ฐฉ์–ธ์œผ๋กœ, ๋ฆฌ์Šคํ”„๋ฅผ ๋ฐฐ์šฐ๊ธฐ ๊ฐ€์žฅ ํŽธํ•œ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•œ๋‹ค. ์‹ค์ œ๋กœ ์œˆ๋„์šฐ, ๋งฅ, ์œ ๋‹‰์Šค ๊ณ„์—ด์— ๋‹ค ํ˜ธํ™˜๋˜๋Š” IDE ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ๊ฑฐ๊ธฐ์— GUI, ๋„คํŠธ์›Œํฌ ๋“ฑ ์›ฌ๋งŒํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ๋‹ค ํฌํ•จ๋˜์–ด์žˆ๊ณ ,(Batteries Included!) ์‹ค์ œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…์€ ๋น„์Šทํ•˜๋ฉด์„œ, ๋…ธ๊ฐ€๋‹ค๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ๋ถ€์ฐจ์ ์ธ ๊ธฐ๋Šฅ๋“ค์„ ๋‹จ์ˆœํ™”์‹œํ‚จ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ต์œก์šฉ ๋ชจ๋“ˆ๊นŒ์ง€ ๋”ฐ๋กœ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. Realm of Racket ์ด๋ผ๋Š” ๊ต์žฌ๋ฅผ ๋ณด๋ฉด, ์ค‘๊ณ ๊ต์ƒ ๋Œ€์ƒ์˜ ๊ธฐ์ดˆ์ ์ธ ์ˆ˜์ค€์ด๊ธด ํ•˜์ง€๋งŒ ์Šคํ‚ด ๋ฌธ๋ฒ•๊ณผ GUI, ๋„คํŠธ์›Œํฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ์ธ๊ณต์ง€๋Šฅ ๋“ฑ์„ ๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹ค์Šต์„ ํ†ตํ•ด ๊ฒจ์šฐ 300 ํŽ˜์ด์ง€ ์ดํ•˜์˜ ๋ถ„๋Ÿ‰์œผ๋กœ ์„ค๋ช…ํ•˜๊ณ  ์žˆ๋‹ค! ์‚ฌ์‹ค, ๋ฆฌ์Šคํ”„๋ผ๋Š” ์–ธ์–ด ์ž์ฒด๊ฐ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ๋งŒ๋“ค๊ธฐ ํŽธ๋ฆฌํ•œ ์–ธ์–ด์ด๊ธฐ๋„ ํ•˜๊ณ , Racket ์€ ์Šคํ‚ด์˜ ์ €๋Ÿฐ ์–ธ์–ด ์ž์ฒด์˜ ํ™•์žฅ์„ฑ์„ ๋‹ค์†Œ ๊ทน๋‹จ์ ์ธ ๋ ˆ๋ฒจ๋กœ ๋Œ์–ด์˜ฌ๋ฆฐ ์–ธ์–ด์ด๊ธฐ์— ๊ฐ€๋Šฅํ•œ ๊ฒƒ.

[2023-09-07 Thu 14:01] LISP ๋ฐฉ์–ธ. ๊ต์œก์šฉ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ตœ์ . ํˆด๊ณผ ๋ฌธ์„œ ๋“ฑ ์ž˜ ๊ฐ–์ถฐ์ ธ ์žˆ๋‹ค. ์ด ๋…€์„์„ ์ค‘์‹ฌ์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ž๋ฃŒ๋ฅผ ๊ตฌ์ถ•ํ•ด์„œ ๋ฆฌ๋”ฉํ•œ๋‹ค. ํ•จ์ˆ˜ํ˜• ์–ธ์–ด๋งŒ ์•Œ๋ฉด ๋œ๋‹ค. ๋ชจ๋“  ๊ฒƒ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ํˆด์€ ์ผ๋‹จ ์ฃผ๋Š” ๊ฑธ๋กœ ํ•œ๋‹ค. ๋”ฐ๋ฅธ ๊ฒƒ์„ ๊ฑด๋“ค์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋ž˜์•ผ ์ค‘์‹ฌ์„ ์žก์„ ์ˆ˜ ์žˆ๋‹ค.

Documentation

[2023-09-07 Thu 14:02] ์˜์–ด๋กœ ๋˜์–ด ์žˆ๋‹ค. ์•„๋ฌดํŠผ ๊ทธ๋ ‡๋‹ค. ๊ทธ๋ƒฅ ํ•ด๋ณด๋Š” ๊ฒƒ ๋ฟ์ด๋‹ค.

OFF Translation

[2023-09-07 Thu 14:02] ํ•œ๊ตญ์–ด๋กœ ๋ฒˆ์—ญ์„ ํ•œ๋‹ค๋ฉด ๋ฌด์—‡์„ ํ•ด์•ผ ํ•˜๋Š”๊ฐ€? ์–ด๋””์—์„œ ๋ถ€ํ„ฐ ํ•ด์•ผ ํ•˜๋Š”๊ฐ€? ๋‹ค ํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ ๊ฒƒ ๋ณด๋‹ค๋Š” ์˜ˆ์ œ ์ค‘์‹ฌ์œผ๋กœ ์—ฐ์Šต ์ฝ”๋“œ๋ฅผ ๊ฒฝํ—˜ํ•ด ๋ณด๋Š” ๊ฒŒ ์šฐ์„ ์ด๋‹ค.

์ตœ์‹ ๋ฒ„์ „ ๋ฐ”์ด๋„ˆ๋ฆฌ ์„ค์น˜

[2023-09-07 Thu 13:48]

$ sudo bash racket-8.10-x86_64-linux-cs.sh
This program will extract and install Racket v8.10.
 
Note: the required diskspace for this installation is 681M.
 
Do you want a Unix-style distribution?
  In this distribution mode files go into different directories according
  to Unix conventions.  A "racket-uninstall" script will be generated
  to be used when you want to remove the installation.  If you say 'no',
  the whole Racket directory is kept in a single installation directory
  (movable and erasable), possibly with external links into it -- this is
  often more convenient, especially if you want to install multiple
  versions or keep it in your home directory.
Enter yes/no (default: no) > yes
 
Where do you want to base your installation of Racket v8.10?
  (If you've done such an installation in the past, either
   enter the same directory, or run 'racket-uninstall' manually.)
  1 - /usr/... [default]
  2 - /usr/local/...
  3 - ~/... (/root/...)
  4 - ./... (here)
  Or enter a different directory prefix to install in.
> 1
 
Target Directories:
  [e] Executables      /usr/bin (exists)
  [o] Libraries        /usr/lib/racket (exists)
  [s] Shared files     /usr/share/racket (exists)
  [c] Configuration    /usr/etc/racket (will be created)
  [d] Documentation    /usr/share/racket/doc (will be created)
  [a] .desktop files   /usr/share/applications (exists)
  [m] Man Pages        /usr/share/man (exists)
  [l] C Libraries      /usr/lib (exists)
  [h] C headers        /usr/include/racket (exists)
  [z] Compiled at lib? yes
Enter a letter to change an entry, or enter to continue.
 
Checking the integrity of the binary archive... ok.
 
Unpacking into "/usr/racket-tmp-install" (Ctrl+C to abort)...
Done.
 
Moving bin -> /usr/bin
Overwrite file "/usr/bin/drracket"?
  [y]es / yes to [a]ll / [n]o=abort > a
 
Moving collects -> /usr/share/racket/collects
Moving share/pkgs -> /usr/share/racket/pkgs
Moving doc -> /usr/share/racket/doc
Moving lib -> /usr/lib/racket
Moving include -> /usr/include/racket
Moving share/applications -> /usr/share/applications
Moving share -> /usr/share/racket
Moving etc -> /usr/etc/racket
Moving man -> /usr/share/man
Moving README -> /usr/share/racket/doc/README
Writing uninstaller at: /usr/bin/racket-uninstall...
Rewriting configuration file at: /usr/etc/racket/config.rktd...
Moving "compiled" in /usr/share/racket/collects to /usr/lib/racket/compiled/usr/share/racket/collects
Moving "compiled" in /usr/share/racket/pkgs to /usr/lib/racket/compiled/usr/share/racket/pkgs
Rewriting configuration file at: /usr/etc/racket/config.rktd...
 
Installation complete.
 

IDE

[2023-09-07 Thu 13:59]

Drracket

[2023-09-07 Thu 14:01] ์ด๊ฒŒ ๊ธฐ๋ณธ์ด๋‹ค. ๊ทธ๋ž˜์„œ ์ข‹์€ ๊ฒƒ์ด๋‹ค.

VSCODE

[2023-09-07 Thu 14:01]

Emacs

[2023-09-07 Thu 14:02] ๋‹ค์Œ ๋ฌธ์„œ์— ์ž์„ธํžˆ ์„ค๋ช…๋˜์–ด ์žˆ๋‹ค.

๋‘ ์ด๋งฅ์Šค ๋ž˜ํ‚ท ๋™์ž‘ ํ™•์ธ

[2024-11-13 Wed 13:52]

์„ค์น˜๋Š” ๋‘ ์ด๋งฅ์Šค ๋ชจ๋“ˆ ์‚ฌ์šฉ

/home/junghan/sync/man/dotsamples/vanilla/hamacs-evil/ha-programming-scheme.org

Try It Out

Working for values?

  (* 6 7)
42

Working for output?

  (define str-1 "hello")
  (define str-2 "world")
  (define all (string-join (list str-1 str-2) ", "))
  (display (string-titlecase all))
Hello, World

,#+results:

Hello, World

The interface is horrendously slow, as the :session doesnโ€™t seem to work, and starting up a Racket REPL takes a long time.

SICP and Racket

If using Racket for SICP, install the SICP language:

raco pkg install --auto --update-deps sicp

We now can give it a #lang sicp (or better yet, use the :lang header) to define certain SICP-specify features:

์ด์ œ #lang sicp=(๋˜๋Š” =:lang ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์Šต๋‹ˆ๋‹ค)๋ฅผ ์ง€์ •ํ•˜์—ฌ ํŠน์ • SICP ์ง€์ • ๊ธฐ๋Šฅ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

Letโ€™s try this now:

(inc 42)
43

,#+results:

43

Related-Notes

References