Racket(비교)

r11 vs r12
1{{{#!html
2<!-- HTML generated using hilite.me --><div style="background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;"><pre style="margin: 0; line-height: 125%"><span style="color: #008800; font-weight: bold">#lang racket</span>
13
4(<span style="color: #0066BB; font-weight: bold">println</span> <span style="color: #AA6600">&#39;Hello,</span> <span style="color: #996633">world!</span><span style="color: #333333">&#39;</span>)
5</pre></div>
6}}}
7
8[목차]
9== 개요 ==
10LISP/Scheme 계열 언어 중 하나인 범용 [[프로그래밍 언어]]이다. Racket 은 프로그래밍 언어 생성, 구현, 및 디자인에 최적화 된 언어이다. Racket은 스크립팅, GUI 애플리케이션을 포함한 범용 애플리케이션 프로그래밍, 교육용 및 연구용 언어로 많이 쓰인다. --이 언어를 만든 사람 중 하나인 Robby Findler는 이걸 써서 Lecture에 쓰는 Slide를 만든다--
11
12== 역사 ==
131990년대 중반에 미국 [[라이스 대학]]의 교수 Matthias Felleison과 박사학위 학생들이었던 Matthew Flatt, Robby Findler, 및 Shriram Krishnamurthi가 교육용 언어로 쓰기 위해 [[Scheme]]을 기반으로 한 새 언어를 개발하기로 한다. 그리고 이 언어를 위한 전용 IDE인 DrRacket을 개발하게 된다. 처음 개발을 시작하고 만든 언어의 이름은 PLT Racket이었으나 2010년 6월에 현재 언어인 Racket으로 변경되었다.
14
15== 특징 ==
16Racket이 다른 LISP 계열 언어와 비교해서 다른 점은 특유의 유연한 매크로와 확장성이라고 할 수 있다. 이렇게 만들어진 모듈들은 Racket 기본 언어의 syntax를 override하게 된다. 일단 모듈은 그 자체가 한 언어로 볼 수 있으므로 그걸 #lang ____ 이런 형식으로 가져와서 쓰게 될 경우 언어 자체를 바꿔버리는 게 가능하다. (극단적인 예시로, 이를 이용하여 racket에서 '''python 코드를''' 돌리게 해주는 모듈도 [[https://github.com/pedropramos/PyonR|있다!]])
17
18== 예제 ==
19문법 자체는 Common Lisp/ Scheme 등을 크게 벗어나지 않는다.
20모든 언어는 일단 헬로월드부터 출력한다.
21(print "Hello World\\n")
22
23Common Lisp 에서의 함수를 정의하는 키워드인 defun 대신 define 을 쓴다.
24피보나치 숫자를 리턴하는 재귀함수를 구현하면:
25(define fib (n)
26 (cond
27 [(< n 2) 1]
28 [else (+ (fib (- n 1)) (fib (- n 2)))]))
29
30== DrRacket ==
31Racket언어 전용 IDE로 처음엔 C++로 구현되었으나 버전 5.0부터는 Racket으로 다시 쓰여졌다.
32[[윈도]], [[macOS]], [[Linux]] 등 거의 모든 플랫폼을 지원한다.
33익숙해지면 꽤 쓸만하다. 특히 이 IDE의 가장 편한 점 중 하나는 괄호를 자동으로 닫아준다. Scheme계열 언어에서는 대괄호, 중괄호, 소괄호 모두가 쓰이는데 그게 여러개 쌓일 경우 불가능하다. 이렇게 써놓으니까 무슨 소린지 잘 모르겠지만 일단 써보면 안다 (...)
34
35== 외부 링크 ==
36라켓 공식 홈페이지 [[https://racket-lang.org/]]
37[[분류:프로그래밍 언어]][[분류:함수형 언어]]