{{{#!html <!-- 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> (<span style="color: #0066BB; font-weight: bold">println</span> <span style="color: #AA6600">'Hello,</span> <span style="color: #996633">world!</span><span style="color: #333333">'</span>) </pre></div> }}} [목차] == 개요 == LISP/Scheme 계열 언어 중 하나인 범용 [[프로그래밍 언어]]이다. Racket 은 프로그래밍 언어 생성, 구현, 및 디자인에 최적화 된 언어이다. Racket은 스크립팅, GUI 애플리케이션을 포함한 범용 애플리케이션 프로그래밍, 교육용 및 연구용 언어로 많이 쓰인다. --이 언어를 만든 사람 중 하나인 Robby Findler는 이걸 써서 Lecture에 쓰는 Slide를 만든다-- == 역사 == 1990년대 중반에 미국 [[라이스 대학]]의 교수 Matthias Felleison과 박사학위 학생들이었던 Matthew Flatt, Robby Findler, 및 Shriram Krishnamurthi가 교육용 언어로 쓰기 위해 [[Scheme]]을 기반으로 한 새 언어를 개발하기로 한다. 그리고 이 언어를 위한 전용 IDE인 DrRacket을 개발하게 된다. 처음 개발을 시작하고 만든 언어의 이름은 PLT Racket이었으나 2010년 6월에 현재 언어인 Racket으로 변경되었다. == 특징 == Racket이 다른 LISP 계열 언어와 비교해서 다른 점은 특유의 유연한 매크로와 확장성이라고 할 수 있다. 이렇게 만들어진 모듈들은 Racket 기본 언어의 syntax를 override하게 된다. 일단 모듈은 그 자체가 한 언어로 볼 수 있으므로 그걸 #lang ____ 이런 형식으로 가져와서 쓰게 될 경우 언어 자체를 바꿔버리는 게 가능하다. (극단적인 예시로, 이를 이용하여 racket에서 '''python 코드를''' 돌리게 해주는 모듈도 [[https://github.com/pedropramos/PyonR|있다!]]) == 예제 == 문법 자체는 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)))])) == DrRacket == Racket언어 전용 IDE로 처음엔 C++로 구현되었으나 버전 5.0부터는 Racket으로 다시 쓰여졌다. [[윈도]], [[macOS]], [[Linux]] 등 거의 모든 플랫폼을 지원한다. 익숙해지면 꽤 쓸만하다. 특히 이 IDE의 가장 편한 점 중 하나는 괄호를 자동으로 닫아준다. Scheme계열 언어에서는 대괄호, 중괄호, 소괄호 모두가 쓰이는데 그게 여러개 쌓일 경우 불가능하다. 이렇게 써놓으니까 무슨 소린지 잘 모르겠지만 일단 써보면 안다 (...) == 외부 링크 == 라켓 공식 홈페이지 [[https://racket-lang.org/]] [[분류:프로그래밍 언어]][[분류:함수형 언어]]