래킷 (프로그래밍 언어)

위키백과, 우리 모두의 백과사전.
래킷
Racket-logo.svg
Drracket.png
우분투에서 실행한 DrRacket
패러다임다중 패러다임: 함수형, 명령형, 논리형, 메타, 모듈성, 객체 지향, 반영
계열리스프
설계자PLT Inc.
개발자PLT Inc.
발표일1995년 (27년 전)(1995)
최근 버전8.5[1] 위키데이터에서 편집하기
최근 버전 출시일2022년 5월 1일 (15일 전)
자료형 체계동적, 정적, 스트롱
플랫폼x86, 파워PC, SPARC, MIPS, ARM
운영 체제크로스 플랫폼
라이선스다중 라이선스 (아파치 라이선스 또는 MIT 허가서). 링크되는 라이브러리로 인한 LGPLv3의 바이너리 배포.[2]
버전 7.5 이전: LGPL
파일 확장자.rkt[3]
웹사이트racket-lang.org
방언
FrTime, Lazy Racket, Typed Racket, Scribble
영향을 받은 언어
에펠,[4] 스킴
영향을 준 언어
클로저,[5] 러스트,[6][7] 스킴[8]

래킷(Racket, 이전 이름: PLT Scheme)은 리스프-스킴 계열의 범용 프로그래밍 패러다임이다. 설계적 목표 중 하나는 언어 제작, 설계, 구현의 플랫폼의 역할을 하는 것이다.[9][10] 이 언어는 스크립팅, 범용 프로그래밍, 컴퓨터 과학 교육, 연구와 같은 다양한 문맥에 사용된다.

플랫폼은 래킷 언어의 구현체(복잡한 런타임 시스템,[11] 다양한 라이브러리, JIT 컴파일러 등)를 제공하며 이 외에도 래킷 자체에서 작성되는 닥터래킷(DrRacket, 이전 이름: DrScheme)이라는 개발 환경도 함께 제공된다.[12] IDE 및 이와 동반되는 프로그래밍 커리큘럼은 프로그램바이디자인(ProgramByDesign) 아웃리치 프로그램에 사용되는데, 이는 컴퓨팅과 프로그래밍을 필수적인 교양 교육 과정의 일부로 전환하려는 시도이다.[13][14] 중심 언어는 확장 매크로 시스템으로 잘 알려져 있으며, 임베디드 및 도메인 특화 언어, 또 클래스모듈과 같은 언어 구성체, 각기 다른 시맨틱스를 갖춘 구별된 래킷 방언들의 제작을 가능케 한다.[15][16][17][18]

플랫폼 배포의 경우 GNU 약소 일반 공중 사용 허가서(LGPL) 라이선스 하에서 자유-오픈 소스 소프트웨어로 배포된다.[19] 공동체가 만든 확장 기능과 패키지들은 래킷의 중앙 패키지 카탈로그에 업로드된다.

코드 예제[편집]

다음은 사소한 헬로 월드 프로그램이다:

#lang racket
"Hello, World!"

이 프로그램을 실행하면 다음과 같이 출력된다:

"Hello, World!"

다음은 조금 덜 사소한 프로그램이다:

이 프로그램의 결과. DrRacket에서 표시한 모습.
#lang racket
(require 2htdp/image)

(let sierpinski ([n 8])
  (if (zero? n)
    (triangle 2 'solid 'red)
    (let ([t (sierpinski (- n 1))])
      (freeze (above t (beside t t))))))

래킷 웹사이트에서 가져온 이 프로그램은 심도 8까지 네스트(nested)된 시에르핀스키 삼각형을 그린다.

#lang 디렉티브를 사용하여 각기 다른 래킷으로 소스 파일을 생성할 수 있다. 다음은 래킷의 정적 타이핑 변종인 Typed Racket에서의 팩토리얼 프로그램의 예시이다.

#lang typed/racket

(: fact (Integer -> Integer))
(define (fact n)
  (if (zero? n) 1 (* n (fact (- n 1)))))

각주[편집]

  1. “Racket v8.5”. 2022년 5월 1일. 2022년 5월 1일에 확인함. 
  2. Tobin-Hochstadt, Sam; Gerard, Sage; Dueck, Joel; Flatt, Matthew; Software Freedom Conservancy; Chestek, Pamela (2019년 11월 15일). “Completing Racket's relicensing effort”. 2019년 12월 27일에 확인함. 
  3. “DrRacket Files”. 2019년 7월 21일에 확인함. The standard file extension for a Racket program file is ".rkt". The extensions ".ss", ".scm", and ".sch" are also historically popular. 
  4. Strickland, T.S.; Fellesisen, Matthias (2010). “DLS 2010: Contracts for First-Class Classes” (PDF). 
  5. Bonnaire-Sergeant, Ambrose (2012). 《A Practical Optional Type System for Clojure》 (학위논문). The University of Western Australia. 
  6. “Planet2 questions”. 
  7. “Rust Bibliography”. 
  8. Sperber, Michael; Dybvig, R. Kent; Flatt, Matthew; Van Straaten, Anton; 외. (August 2007). “Revised6 Report on the Algorithmic Language Scheme (R6RS)”. Scheme Steering Committee. 2011년 9월 13일에 확인함. 
  9. “Welcome to Racket”. 2011년 8월 15일에 확인함. 
  10. “Dialects of Racket and Scheme”. 2011년 8월 15일에 확인함. 
  11. Flatt; Findler; Krishnamurthi; Felleisen (1999). 《Programming Languages as Operating Systems (or, Revenge of the Son of the Lisp Machine)》. International Conference on Functional Programming. 
  12. Findler; Clements; Flanagan; Flatt; Krishnamurthi; Steckler; Felleisen (2001). “DrScheme: A Programming Environment for Scheme” (PDF). 《Journal of Functional Programming》. 
  13. Felleisen; Findler; Flatt; Krishnamurthi (2004). “The TeachScheme! Project: Computing and Programming for Every Student”. 《Journal of Computer Science Education》. 
  14. “Overview”. Program by Design. 2011년 8월 17일에 확인함. 
  15. “Macros Matter”. 2007년 5월 3일. 2011년 8월 8일에 확인함. 
  16. Flatt, M.; Findler, R. B.; Felleisen, M. (2006). 〈Scheme with Classes, Mixins, and Traits〉 (PDF). 《Asian Symposium on Programming Languages and Systems》. 
  17. Flatt, M.; Felleisen, M. (1998). 〈Units: Cool Modules for Hot Languages〉. 《Programming Language Design and Implementation》. 
  18. Tobin-Hochstadt, S.; St-Amour, V.; Culpepper, R.; Flatt, M.; Felleisen, M. (2011). 〈Languages as Libraries〉 (PDF). 《Programming Language Design and Implementation》. 
  19. “Racket: Software License”. 2015년 10월 20일에 확인함. 

외부 링크[편집]