<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Racket</id>
	<title>Racket - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Racket"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Racket&amp;action=history"/>
	<updated>2026-06-30T16:07:31Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Racket&amp;diff=2334378&amp;oldid=prev</id>
		<title>imported&gt;SchlurcherBot：​Bot: http → https</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Racket&amp;diff=2334378&amp;oldid=prev"/>
		<updated>2025-12-14T10:18:36Z</updated>

		<summary type="html">&lt;p&gt;Bot: http → https&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{noteTA|G1=IT}}&lt;br /&gt;
{{Infobox programming language&lt;br /&gt;
| name                   = Racket&lt;br /&gt;
| logo                   = Racket-logo.svg&lt;br /&gt;
| logo_size               = 120px&lt;br /&gt;
| paradigm               = [[编程范型|多范型]]: [[函数式编程|函数式]], [[反射式编程|反射式]], [[元编程]], [[面向语言编程|面向语言]], [[面向对象编程|面向对象]], [[过程式编程|过程式]], [[模块化编程|模块化]], [[逻辑编程|逻辑式]]&lt;br /&gt;
| screenshot             = Drracket.png&lt;br /&gt;
| screenshot caption     = 运行于[[Ubuntu]]的DrRacket&lt;br /&gt;
| year                   = {{Start date and age|1995}}&lt;br /&gt;
| developer              = PLT Inc.&lt;br /&gt;
| latest_release_version = {{wikidata|property|reference|edit|Q28975406|P348}}&lt;br /&gt;
| latest_release_date = {{wikidata|qualifier|Q28975406|P348|P577}}，{{Time ago|{{wikidata|qualifier|raw|Q28975406|P348|P577}}}}&lt;br /&gt;
| frequently updated     = yes&lt;br /&gt;
| family = [[Lisp]]/[[Scheme]]&lt;br /&gt;
| typing                 = [[动态类型]], [[强类型]], [[静态类型]]&lt;br /&gt;
| implementations        =&lt;br /&gt;
| dialects               = Typed Racket&amp;lt;ref&amp;gt;{{Cite web |url=http://docs.racket-lang.org/ts-guide/ |title=Typed Racket |access-date=2014-03-05 |archive-date=2020-11-11 |archive-url=https://web.archive.org/web/20201111220723/http://docs.racket-lang.org/ts-guide/ |dead-url=no }}&amp;lt;/ref&amp;gt;, Lazy Racket&amp;lt;ref&amp;gt;{{Cite web |url=https://docs.racket-lang.org/lazy/ |title=Lazy Racket |access-date=2014-03-05 |archive-date=2021-04-19 |archive-url=https://web.archive.org/web/20210419003420/https://docs.racket-lang.org/lazy/ |dead-url=no }}&amp;lt;/ref&amp;gt;, Scribble&amp;lt;ref&amp;gt;{{Cite web |url=https://docs.racket-lang.org/scribble/ |title=Scribble |access-date=2014-03-05 |archive-date=2022-12-11 |archive-url=https://web.archive.org/web/20221211222546/https://docs.racket-lang.org/scribble/ |dead-url=no }}&amp;lt;/ref&amp;gt;, FrTime&amp;lt;ref&amp;gt;{{Cite web |url=https://docs.racket-lang.org/frtime/ |title=FrTime |access-date=2014-03-05 |archive-date=2023-01-16 |archive-url=https://web.archive.org/web/20230116221849/https://docs.racket-lang.org/frtime/ |dead-url=no }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| influenced             = [[Clojure]]&amp;lt;ref name=&amp;quot;typed-clojure-thesis&amp;quot;&amp;gt;{{cite thesis|last=Bonnaire-Sergeant|first=Ambrose|title=A Practical Optional Type System for Clojure|publisher=The University of Western Australia|year=2012}}&amp;lt;/ref&amp;gt;、[[Rust (编程语言)|Rust]]、[[Scheme]]&amp;lt;ref name=&amp;quot;r6rs&amp;quot;&amp;gt;{{cite web |url=http://www.r6rs.org |title=Revised&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt; 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, et al. |date=August 2007 |publisher=Scheme Steering Committee |accessdate=2011-09-13 |archive-date=2013-06-25 |archive-url=https://www.webcitation.org/6HcvveNv7?url=http://www.r6rs.org/ |dead-url=no }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| influenced_by          = [[Scheme]], [[Eiffel]]&amp;lt;ref&amp;gt;{{cite web |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 |accessdate=2014-03-05 |archive-date=2013-05-23 |archive-url=https://www.webcitation.org/6GpxBuN6l?url=http://www.ccs.neu.edu/racket/pubs/dls10-sf.pdf |dead-url=yes }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| standard               = [[R5RS]], [[R6RS]]&lt;br /&gt;
| operating_system       = [[跨平台]]&lt;br /&gt;
| platform               = [[x86]], [[PowerPC]], [[SPARC]], [[MIPS]], [[ARM]]&lt;br /&gt;
| license                = [[GNU宽通用公共许可证|LGPL]]&lt;br /&gt;
| website                = {{URL|racket-lang.org}}&lt;br /&gt;
| file ext               = &amp;lt;code&amp;gt;.rkt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.rktl&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.rktd&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.scrbl&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.plt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.ss&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.scm&amp;lt;/code&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{lang|en|&amp;#039;&amp;#039;&amp;#039;Racket&amp;#039;&amp;#039;&amp;#039;}}（原名 {{lang|en|&amp;#039;&amp;#039;&amp;#039;PLT Scheme&amp;#039;&amp;#039;&amp;#039;}}&amp;lt;ref&amp;gt;{{Cite web |url=http://plt-scheme.org/ |title=PLT Scheme |accessdate=2014-03-05 |archive-date=2014-03-05 |archive-url=https://web.archive.org/web/20140305180110/http://plt-scheme.org/ |dead-url=no }}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Cite web |url=http://stackoverflow.com/questions/13724714/what-does-the-plt-in-plt-scheme-now-called-racket-stand-for/ |title=What does &amp;quot;PLT&amp;quot; stand for? |accessdate=2014-03-05 |archive-date=2014-08-21 |archive-url=https://web.archive.org/web/20140821044751/http://stackoverflow.com/questions/13724714/what-does-the-plt-in-plt-scheme-now-called-racket-stand-for |dead-url=no }}&amp;lt;/ref&amp;gt;）是個通用、多範型，屬於[[Lisp]]家族的[[函数式编程|函數式]][[程序设计語言]]，它的設計目之一是為了提供一種用於創造設計與實作其它編程語言的平台，Racket被用於腳本程式設計、通用程式設計、電腦科學教育和學術研究等不同領域。&lt;br /&gt;
&lt;br /&gt;
Racket有一個實作平台，包含了執行環境、函数庫、[[即時編譯]]器（{{lang|en|JIT compiler}}）等等，還有提供一個以Racket本身寫成的開發環境 DrRacket&amp;lt;ref&amp;gt;{{Cite web |url=http://docs.racket-lang.org/drracket/ |title=DrRacket |accessdate=2014-03-05 |archive-date=2014-03-05 |archive-url=https://web.archive.org/web/20140305163925/http://docs.racket-lang.org/drracket/ |dead-url=no }}&amp;lt;/ref&amp;gt; (原名 {{lang|en|DrScheme}})。&lt;br /&gt;
&lt;br /&gt;
Racket平台的發行版本是免費且開放原始碼的，以[[GNU宽通用公共许可证]]授權發行，所有由社群所編寫的擴充功能和套件都會被上傳到 PLaneT(一個網頁套件發佈系統)。&lt;br /&gt;
&lt;br /&gt;
基於 Racket 實現的 Scribble 可以用來構建[[HTML]]或[[PDF]]（依賴 [[LaTeX]]），Racket 官方文檔就是基於這個語言來編寫的。&lt;br /&gt;
&lt;br /&gt;
== 开发原则 ==&lt;br /&gt;
&lt;br /&gt;
Racket的开发基于以下原则：&amp;lt;ref&amp;gt;{{cite web|title=The Racket Manifesto|url=http://www.ccs.neu.edu/home/matthias/Tmp/manifesto/index.html|author=Matthias Felleisen et al.|accessdate=March 25, 2015|deadurl=yes|archiveurl=https://web.archive.org/web/20150402130721/http://www.ccs.neu.edu/home/matthias/Tmp/manifesto/index.html|archivedate=2015年4月2日|df=}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 程式语言的目的是表述和解决问题，这一过程通常在特定的情境中发生，该情境有一定的描述语言，因此Racket应该是能够创制新程式语言的程式语言；&lt;br /&gt;
* 基于上述的表述问题的方式，问题系统可视为多语言的相互联系的组件的集合，Racket应当能够提供足够的保护机制，允许实现各种语言的完整特性；&lt;br /&gt;
* 与问题解决相关的在语言之外的机制，如项目和资源的管理，也可被Racket转换为语言构造。&lt;br /&gt;
&lt;br /&gt;
== 歷史 ==&lt;br /&gt;
=== 開發 ===&lt;br /&gt;
Matthias Felleisen在1990年代中期建立了PLT，一開始為一個研究團隊，不久後逐漸投入程式設計師入門教材的專案開發。&lt;br /&gt;
&lt;br /&gt;
在1995年1月，這個團隊決定開發一個建立在 Scheme函數式程式語言上的教學用程式語言環境，Mattew Flatt 簡單的從 libscheme 中將 MrEd (Racket 的原始虛擬機器)、[[wxWidgets]] 與一些其他的免費系統結合，接下來的幾年內，由 Flatt、Robby Findler、Shriram Krishnamurthi、Cormac Flanagan 和其他許多人組成的團隊推出了 DrScheme，一個給 Scheme 程式設計新手的程式設計環境，也作為[[:類型系統#.E5.BC.B7.E5.9E.8B.E5.88.A5.E5.92.8C.E5.BC.B1.E5.9E.8B.E5.88.A5|弱型別]]程式語言的研究環境，當時 DrScheme 主要支援的程式語言叫做 PLT Scheme。&lt;br /&gt;
&lt;br /&gt;
在此同時，該團隊也開始為中學教師開設研習課程，教授他們學習程式設計與函數式程式設計，這些老師和他們的學生所做的現場測試提供了團對專案開發方向重要的依據，在接下來的幾年中，PLT 團隊為 DrScheme 加入了教學用語言，例如 代數步進器&amp;lt;ref&amp;gt;{{Cite web |url=http://www.ccs.neu.edu/racket/pubs/esop2001-cff.pdf |title=存档副本 |accessdate=2014-03-12 |archive-date=2013-04-30 |archive-url=https://web.archive.org/web/20130430220259/http://www.ccs.neu.edu/racket/pubs/esop2001-cff.pdf |dead-url=no }}&amp;lt;/ref&amp;gt;、[[:读取﹣求值﹣输出循环|讀取-求值-輸出循環]]、constructor-based printer 和其他許多發明，推出了一套有應用價值的程式教學環境。&lt;br /&gt;
&lt;br /&gt;
2001年，核心團隊(Felleisen, Findler, Flatt, Krishnamurthi)也編纂和發行了他們的第一本教科書《[[程序设计方法]]》，融入了許多他們的教學理念。&lt;br /&gt;
&lt;br /&gt;
在2010年6月7日, PLT Scheme被重命名为Racket&amp;lt;ref&amp;gt;{{cite web |url=http://racket-lang.org/new-name.html |title=From PLT Scheme to Racket |publisher=Racket-lang.org |access-date=2011-08-17 |archive-date=2013-05-30 |archive-url=https://web.archive.org/web/20130530021715/http://racket-lang.org/new-name.html |dead-url=no }}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 代碼範例 ==&lt;br /&gt;
[[杨辉三角形]]（代碼來自：rosettacode）：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;racket&amp;quot;&amp;gt;&lt;br /&gt;
#lang racket&lt;br /&gt;
(define (next-row row)&lt;br /&gt;
  (map + (cons 0 row) (append row &amp;#039;(0))))&lt;br /&gt;
 &lt;br /&gt;
(define (triangle row rows)&lt;br /&gt;
  (if (= rows 0)&lt;br /&gt;
      &amp;#039;()&lt;br /&gt;
      (cons row (triangle (next-row row) (- rows 1)))))&lt;br /&gt;
 &lt;br /&gt;
(triangle (list 1) 5)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
運行後顯示&lt;br /&gt;
:{{samp|&amp;#039;((1) (1 1) (1 2 1) (1 3 3 1) (1 4 6 4 1))}}&lt;br /&gt;
&lt;br /&gt;
繪製迭代8次的 [[謝爾賓斯基三角形]] （代碼來自：Racket 官網）：&lt;br /&gt;
[[File:Sierpinski Racket example.png|thumb|The result of this program, as shown in DrRacket]]&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Racket&amp;quot;&amp;gt;&lt;br /&gt;
#lang racket&lt;br /&gt;
(require 2htdp/image)&lt;br /&gt;
&lt;br /&gt;
(let sierpinski ([n 8])&lt;br /&gt;
  (if (zero? n)&lt;br /&gt;
    (triangle 2 &amp;#039;solid &amp;#039;red)&lt;br /&gt;
    (let ([t (sierpinski (- n 1))])&lt;br /&gt;
      (freeze (above t (beside t t))))))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在代碼的第一行使用 &amp;lt;code&amp;gt;#lang&amp;lt;/code&amp;gt;來使用不同的方言.  下面的範例使用 Racket 的一種靜態類型的方言 Typed Racket 計算階層。&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Racket&amp;quot;&amp;gt;&lt;br /&gt;
#lang typed/racket&lt;br /&gt;
&lt;br /&gt;
(: fact (Integer -&amp;gt; Integer))&lt;br /&gt;
(define (fact n)&lt;br /&gt;
  (if (zero? n) 1 (* n (fact (- n 1)))))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 註釋 ==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
== 外部連結 ==&lt;br /&gt;
* {{Official website|racket-lang.org}}&lt;br /&gt;
&lt;br /&gt;
{{Lisp programming language}}&lt;br /&gt;
{{程序设计语言}}&lt;br /&gt;
&lt;br /&gt;
[[Category:函数式编程语言]]&lt;br /&gt;
[[Category:面向对象的编程语言]]&lt;br /&gt;
[[Category:模式匹配编程语言]]&lt;br /&gt;
[[Category:LISP程式語言家族]]&lt;br /&gt;
[[Category:学术的编程语言]]&lt;br /&gt;
[[Category:1995年建立的程式語言]]&lt;/div&gt;</summary>
		<author><name>imported&gt;SchlurcherBot</name></author>
	</entry>
</feed>