{{위키데이터 속성 추적}}
{{Infobox programming language
| name = 래킷
| logo = Racket-logo.svg
| screenshot = Drracket.png
| screenshot caption = [[우분투 (운영 체제)|우분투]]에서 실행한 DrRacket
| paradigm = [[프로그래밍 패러다임|다중 패러다임]]: [[함수형 프로그래밍|함수형]], [[명령형 프로그래밍|명령형]], [[논리형 프로그래밍|논리형]], [[메타프로그래밍|메타]], [[모듈성 (프로그래밍)|모듈성]], [[객체 지향 프로그래밍|객체 지향]], [[반영 (컴퓨터 과학)|반영]]
| family = [[리스프]]
| year = {{시작 날짜와 나이|1995}}
| designer = PLT Inc.
| developer = PLT Inc.
| latest_release_version = {{wikidata|property|reference|edit|Q28975406|P348}}
| latest_release_date = {{wikidata|qualifier|Q28975406|P348|P577}} ({{Time ago| {{wikidata|qualifier|raw|Q28975406|P348|P577}} }})
| typing = [[자료형 체계|동적]], [[자료형 체계|정적]], [[스트롱 타이핑|스트롱]]
| implementations = 
| dialects = FrTime, Lazy Racket, Typed Racket, Scribble
| influenced by = [[에펠]],<ref>{{웹 인용|url=http://www.ccs.neu.edu/racket/pubs/dls10-sf.pdf |title=DLS 2010: Contracts for First-Class Classes |last1=Strickland |first1=T.S. |last2=Fellesisen |first2=Matthias |year=2010}}</ref> [[스킴 (프로그래밍 언어)|스킴]]
| influenced = [[클로저 (프로그래밍 언어)|클로저]],<ref name="typed-clojure-thesis">{{학위논문 인용|last=Bonnaire-Sergeant |first=Ambrose |title=A Practical Optional Type System for Clojure|publisher=The University of Western Australia |year=2012}}</ref> [[러스트]],<ref>{{웹 인용 |url=https://mail.mozilla.org/pipermail/rust-dev/2013-May/003947.html |title=Planet2 questions |확인날짜=2020-02-16 |archive-date=2021-06-25 |archive-url=https://web.archive.org/web/20210625144605/https://mail.mozilla.org/pipermail/rust-dev/2013-May/003947.html |url-status= }}</ref><ref>{{웹 인용|url=https://github.com/rust-lang/rust/blob/0486e12ad0661adcfdbd926dea17d7edfda419c1/src/doc/book/bibliography.md |title=Rust Bibliography}}</ref> [[스킴 (프로그래밍 언어)|스킴]]<ref name="r6rs">{{웹 인용 |url=http://www.r6rs.org/ |title=Revised<sup>6</sup> Report on the Algorithmic Language Scheme (R6RS) |last1=Sperber |first1=Michael |last2=Dybvig |first2=R. Kent |last3=Flatt |first3=Matthew |last4=Van Straaten |first4=Anton |date=August 2007 |publisher=Scheme Steering Committee |access-date=2011-09-13 |display-authors=etal |archive-date=2013-08-12 |archive-url=https://web.archive.org/web/20130812014945/http://www.r6rs.org/ |url-status= }}</ref>
| platform = [[x86]], [[파워PC]], [[SPARC]], [[MIPS 아키텍처|MIPS]], [[ARM 아키텍처|ARM]]
| operating system = [[크로스 플랫폼]]
| license = [[다중 라이선스]] ([[아파치 라이선스]] 또는 [[MIT 허가서]]). 링크되는 라이브러리로 인한 [[GNU 약소 일반 공중 사용 허가서|LGPLv3]]의 바이너리 배포.<ref>{{웹 인용|title=Completing Racket's relicensing effort|url=https://blog.racket-lang.org/2019/11/completing-racket-s-relicensing-effort.html|last=Tobin-Hochstadt|first=Sam|last2=Gerard|first2=Sage|last3=Dueck|first3=Joel|last4=Flatt|first4=Matthew|author-link4=Matthew Flatt|author5=Software Freedom Conservancy|author-link5=Software Freedom Conservancy|last6=Chestek|first6=Pamela|date=2019-11-15|accessdate=2019-12-27}}</ref><br />버전 7.5 이전: [[GNU 약소 일반 공중 사용 허가서|LGPL]]
| file ext = .rkt<ref>{{웹 인용|title=DrRacket Files|quote=The standard file extension for a Racket program file is ".rkt". The extensions ".ss", ".scm", and ".sch" are also historically popular.|url=https://docs.racket-lang.org/drracket/drracket-files.html|accessdate=21 July 2019}}</ref>
| website = {{URL|https://racket-lang.org/}}
| frequently updated = 예
| standard = [[R5RS]], [[R6RS]]
}}
'''래킷'''(Racket, 이전 이름: PLT Scheme)은 [[리스프]]-[[스킴 (프로그래밍 언어)|스킴]] 계열의 [[범용 프로그래밍 언어|범용]] [[프로그래밍 패러다임]]이다. 설계적 목표 중 하나는 언어 제작, 설계, 구현의 플랫폼의 역할을 하는 것이다.<ref>{{웹 인용| title = Welcome to Racket | url = http://docs.racket-lang.org/guide/intro.html | accessdate = 2011-08-15}}</ref><ref>{{웹 인용| title = Dialects of Racket and Scheme | url = http://docs.racket-lang.org/guide/dialects.html | accessdate = 2011-08-15}}</ref> 이 언어는 [[스크립팅]], 범용 프로그래밍, 컴퓨터 과학 교육, 연구와 같은 다양한 문맥에 사용된다.

플랫폼은 래킷 언어의 구현체(복잡한 [[런타임 시스템]],<ref name="mred">
  {{콘퍼런스 인용 |last1=Flatt|last2=Findler|last3=Krishnamurthi|last4=Felleisen
  | conference=International Conference on Functional Programming
  | title=Programming Languages as Operating Systems (or, Revenge of the Son of the Lisp Machine)|year=1999}}</ref> 다양한 라이브러리, [[JIT 컴파일|JIT 컴파일러]] 등)를 제공하며 이 외에도 래킷 자체에서 작성되는 닥터래킷(DrRacket, 이전 이름: DrScheme)이라는 개발 환경도 함께 제공된다.<ref name="drscheme">{{저널 인용|title=DrScheme: A Programming Environment for Scheme|journal=Journal of Functional Programming|last1=Findler|last2=Clements|last3=Flanagan|last4=Flatt|last5=Krishnamurthi|last6=Steckler|last7=Felleisen|url=http://www.ccs.neu.edu/racket/pubs/jfp01-fcffksf.pdf|year=2001}}</ref> IDE 및 이와 동반되는 프로그래밍 커리큘럼은 [[프로그램바이디자인]](ProgramByDesign) 아웃리치 프로그램에 사용되는데, 이는 컴퓨팅과 프로그래밍을 필수적인 교양 교육 과정의 일부로 전환하려는 시도이다.<ref name="teachscheme">{{뉴스 인용| last1=Felleisen | last2=Findler | last3=Flatt | last4=Krishnamurthi | year = 2004 | url = http://www.ccs.neu.edu/scheme/pubs/#cse2003-fffk | title = The TeachScheme! Project: Computing and Programming for Every Student | journal = Journal of Computer Science Education}}</ref><ref>{{웹 인용 |url=http://programbydesign.org/overview |title=Overview |publisher=Program by Design |date= |accessdate=2011-08-17 |archive-date=2013-05-20 |archive-url=https://web.archive.org/web/20130520104718/http://www.programbydesign.org/overview |url-status= }}</ref>
중심 언어는 확장 [[매크로 (컴퓨터 과학)|매크로]] 시스템으로 잘 알려져 있으며, 임베디드 및 [[도메인 특화 언어]], 또 [[클래스]]나 [[모듈성 (프로그래밍)|모듈]]과 같은 언어 구성체, 각기 다른 시맨틱스를 갖춘 구별된 래킷 방언들의 제작을 가능케 한다.<ref name="macros-matter">{{웹 인용| title = Macros Matter | url = http://blog.racket-lang.org/2007/05/macros-matter.html | accessdate=2011-08-08 | date=2007-05-03}}</ref><ref name="scheme-with-classes">{{콘퍼런스 인용
 | last1 = Flatt | first1 = M.
 | last2 = Findler | first2 = R. B.
 | last3 = Felleisen | first3 = M.
 | title = Scheme with Classes, Mixins, and Traits
 | booktitle = Asian Symposium on Programming Languages and Systems
 | year = 2006
 | url = http://www.ccs.neu.edu/scheme/pubs/asplas06-fff.pdf}}
</ref><ref name="units">{{콘퍼런스 인용
 | last1 = Flatt | first1 = M.
 | last2 = Felleisen | first2 = M.
 | title = Units: Cool Modules for Hot Languages
 | booktitle = Programming Language Design and Implementation
 | year = 1998
 | url = http://www.ccs.neu.edu/scheme/pubs/pldi98-ff.ps.gz}}
</ref><ref name="languages-as-libraries">{{콘퍼런스 인용
 | last1 = Tobin-Hochstadt | first1 = S.
 | last2 = St-Amour | first2 = V.
 | last3 = Culpepper | first3 = R.
 | last4 = Flatt | first4 = M.
 | last5 = Felleisen | first5 = M.
 | title = Languages as Libraries
 | booktitle = Programming Language Design and Implementation
 | year = 2011
 | url = http://www.ccs.neu.edu/scheme/pubs/pldi11-thacff.pdf}}
</ref>

플랫폼 배포의 경우 [[GNU 약소 일반 공중 사용 허가서]](LGPL) 라이선스 하에서 [[자유-오픈 소스 소프트웨어]]로 배포된다.<ref name="racket-lgpl-license">{{웹 인용| title = Racket: Software License | url = http://download.racket-lang.org/license.html | accessdate=2015-10-20}}</ref> 공동체가 만든 확장 기능과 패키지들은 래킷의 중앙 패키지 카탈로그에 업로드된다.

== 코드 예제 ==
다음은 사소한 [[헬로 월드]] 프로그램이다:
<syntaxhighlight lang="Racket">
#lang racket
"Hello, World!"
</syntaxhighlight>
이 프로그램을 실행하면 다음과 같이 출력된다:
:{{samp|"Hello, World!"}}

다음은 조금 덜 사소한 프로그램이다:
[[파일:Sierpinski Racket example.png|섬네일|이 프로그램의 결과. DrRacket에서 표시한 모습.]]
<syntaxhighlight lang="Racket">
#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))))))
</syntaxhighlight>
래킷 웹사이트에서 가져온 이 프로그램은 심도 8까지 네스트(nested)된 [[시에르핀스키 삼각형]]을 그린다.

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

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

== 각주 ==
{{각주}}

== 외부 링크 ==
* {{공식 웹사이트}}
* {{GitHub|racket/racket|Racket source code repository}}
* [http://pkgs.racket-lang.org/ Package management system]

{{전거 통제}}

[[분류:함수형 프로그래밍 언어]]
[[분류:객체 지향 프로그래밍 언어]]
[[분류:교육용 프로그래밍 언어]]
[[분류:크로스 플랫폼 자유 소프트웨어]]
[[분류:LGPL 라이선스 소프트웨어]]
[[분류:자유 컴파일러와 인터프리터]]