fbpx
维基百科

Racket

Racket(原名 PLT Scheme[9][10])是個通用、多範型,屬於Lisp家族的函數式程序设计語言,它的設計目之一是為了提供一種用於創造設計與實作其它編程語言的平台,Racket被用於腳本程式設計、通用程式設計、電腦科學教育和學術研究等不同領域。

Racket
运行于Ubuntu的DrRacket
编程范型多范型: 函数式, 反射式, 元编程, 面向语言, 面向对象, 过程式, 模块化, 逻辑式
语言家族Lisp/Scheme
實作者PLT Inc.
发行时间1995年,​28年前​(1995
型態系統动态类型, 强类型, 静态类型
系统平台x86, PowerPC, SPARC, MIPS, ARM
操作系统跨平台
許可證LGPL
文件扩展名.rkt, .rktl, .rktd, .scrbl, .plt, .ss, .scm
網站racket-lang.org
衍生副語言
Typed Racket[1], Lazy Racket[2], Scribble[3], FrTime[4]
啟發語言
Scheme, Eiffel[5]
影響語言
Clojure[6]RustScheme[7]

Racket有一個實作平台,包含了執行環境、函数庫、即時編譯器(JIT compiler)等等,還有提供一個以Racket本身寫成的開發環境 DrRacket[11] (原名 DrScheme)。

Racket平台的發行版本是免費且開放原始碼的,以GNU宽通用公共许可证授權發行,所有由社群所編寫的擴充功能和套件都會被上傳到 PLaneT(一個網頁套件發佈系統)。

基於 Racket 實現的 Scribble 可以用來構建HTMLPDF(依賴 LaTeX),Racket 官方文檔就是基於這個語言來編寫的。

开发原则 编辑

Racket的开发基于以下原则:[12]

  • 程式语言的目的是表述和解决问题,这一过程通常在特定的情境中发生,该情境有一定的描述语言,因此Racket应该是能够创制新程式语言的程式语言;
  • 基于上述的表述问题的方式,问题系统可视为多语言的相互联系的组件的集合,Racket应当能够提供足够的保护机制,允许实现各种语言的完整特性;
  • 与问题解决相关的在语言之外的机制,如项目和资源的管理,也可被Racket转换为语言构造。

歷史 编辑

開發 编辑

Matthias Felleisen在1990年代中期建立了PLT,一開始為一個研究團隊,不久後逐漸投入程式設計師入門教材的專案開發。

在1995年1月,這個團隊決定開發一個建立在 Scheme函數式程式語言上的教學用程式語言環境,Mattew Flatt 簡單的從 libscheme 中將 MrEd (Racket 的原始虛擬機器)、wxWidgets 與一些其他的免費系統結合,接下來的幾年內,由 Flatt、Robby Findler、Shriram Krishnamurthi、Cormac Flanagan 和其他許多人組成的團隊推出了 DrScheme,一個給 Scheme 程式設計新手的程式設計環境,也作為弱型別程式語言的研究環境,當時 DrScheme 主要支援的程式語言叫做 PLT Scheme。

在此同時,該團隊也開始為中學教師開設研習課程,教授他們學習程式設計與函數式程式設計,這些老師和他們的學生所做的現場測試提供了團對專案開發方向重要的依據,在接下來的幾年中,PLT 團隊為 DrScheme 加入了教學用語言,例如 代數步進器[13]讀取-求值-輸出循環、constructor-based printer 和其他許多發明,推出了一套有應用價值的程式教學環境。

2001年,核心團隊(Felleisen, Findler, Flatt, Krishnamurthi)也編纂和發行了他們的第一本教科書《程序设计方法》,融入了許多他們的教學理念。

在2010年6月7日, PLT Scheme被重命名为Racket[14]

代碼範例 编辑

杨辉三角形(代碼來自:rosettacode):

#lang racket (define (next-row row)  (map + (cons 0 row) (append row '(0))))   (define (triangle row rows)  (if (= rows 0)  '()  (cons row (triangle (next-row row) (- rows 1)))))   (triangle (list 1) 5) 

運行後顯示

'((1) (1 1) (1 2 1) (1 3 3 1) (1 4 6 4 1))

繪製迭代8次的 謝爾賓斯基三角形 (代碼來自:Racket 官網):

 
The result of this program, as shown in 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)))))) 

在代碼的第一行使用 #lang來使用不同的方言. 下面的範例使用 Racket 的一種靜態類型的方言 Typed Racket 計算階層。

#lang typed/racket (: fact (Integer -> Integer)) (define (fact n)  (if (zero? n) 1 (* n (fact (- n 1))))) 

註釋 编辑

  1. ^ Typed Racket. [2014-03-05]. (原始内容于2020-11-11). 
  2. ^ Lazy Racket. [2014-03-05]. (原始内容于2021-04-19). 
  3. ^ Scribble. [2014-03-05]. (原始内容于2022-12-11). 
  4. ^ FrTime. [2014-03-05]. (原始内容于2023-01-16). 
  5. ^ Strickland, T.S.; Fellesisen, Matthias. DLS 2010: Contracts for First-Class Classes (PDF). 2010 [2014-03-05]. (原始内容 (PDF)存档于2013-05-23). 
  6. ^ Bonnaire-Sergeant, Ambrose. A Practical Optional Type System for Clojure (学位论文). The University of Western Australia. 2012. 
  7. ^ Sperber, Michael; Dybvig, R. Kent; Flatt, Matthew; Van Straaten, Anton; et al. Revised6 Report on the Algorithmic Language Scheme (R6RS). Scheme Steering Committee. August 2007 [2011-09-13]. (原始内容存档于2013-06-25). 
  8. ^ Racket v8.10. 2023年8月16日 [2023年8月16日]. 
  9. ^ PLT Scheme. [2014-03-05]. (原始内容于2014-03-05). 
  10. ^ What does "PLT" stand for?. [2014-03-05]. (原始内容于2014-08-21). 
  11. ^ DrRacket. [2014-03-05]. (原始内容于2014-03-05). 
  12. ^ Matthias Felleisen; et al. . [March 25, 2015]. (原始内容存档于2015年4月2日). 
  13. ^ 存档副本 (PDF). [2014-03-12]. (原始内容 (PDF)于2013-04-30). 
  14. ^ From PLT Scheme to Racket. Racket-lang.org. [2011-08-17]. (原始内容于2013-05-30). 

外部連結 编辑

  • 官方网站

racket, 原名, scheme, 是個通用, 多範型, 屬於lisp家族的函數式程序设计語言, 它的設計目之一是為了提供一種用於創造設計與實作其它編程語言的平台, 被用於腳本程式設計, 通用程式設計, 電腦科學教育和學術研究等不同領域, 运行于ubuntu的dr编程范型多范型, 函数式, 反射式, 元编程, 面向语言, 面向对象, 过程式, 模块化, 逻辑式语言家族lisp, scheme實作者plt, 发行时间1995年, 28年前, 1995, 型態系統动态类型, 强类型, 静态类型系统平台x86, po. Racket 原名 PLT Scheme 9 10 是個通用 多範型 屬於Lisp家族的函數式程序设计語言 它的設計目之一是為了提供一種用於創造設計與實作其它編程語言的平台 Racket被用於腳本程式設計 通用程式設計 電腦科學教育和學術研究等不同領域 Racket运行于Ubuntu的DrRacket编程范型多范型 函数式 反射式 元编程 面向语言 面向对象 过程式 模块化 逻辑式语言家族Lisp Scheme實作者PLT Inc 发行时间1995年 28年前 1995 型態系統动态类型 强类型 静态类型系统平台x86 PowerPC SPARC MIPS ARM操作系统跨平台許可證LGPL文件扩展名 rkt rktl rktd scrbl plt ss scm網站racket lang wbr org衍生副語言Typed Racket 1 Lazy Racket 2 Scribble 3 FrTime 4 啟發語言Scheme Eiffel 5 影響語言Clojure 6 Rust Scheme 7 Racket有一個實作平台 包含了執行環境 函数庫 即時編譯器 JIT compiler 等等 還有提供一個以Racket本身寫成的開發環境 DrRacket 11 原名 DrScheme Racket平台的發行版本是免費且開放原始碼的 以GNU宽通用公共许可证授權發行 所有由社群所編寫的擴充功能和套件都會被上傳到 PLaneT 一個網頁套件發佈系統 基於 Racket 實現的 Scribble 可以用來構建HTML或PDF 依賴 LaTeX Racket 官方文檔就是基於這個語言來編寫的 目录 1 开发原则 2 歷史 2 1 開發 3 代碼範例 4 註釋 5 外部連結开发原则 编辑Racket的开发基于以下原则 12 程式语言的目的是表述和解决问题 这一过程通常在特定的情境中发生 该情境有一定的描述语言 因此Racket应该是能够创制新程式语言的程式语言 基于上述的表述问题的方式 问题系统可视为多语言的相互联系的组件的集合 Racket应当能够提供足够的保护机制 允许实现各种语言的完整特性 与问题解决相关的在语言之外的机制 如项目和资源的管理 也可被Racket转换为语言构造 歷史 编辑開發 编辑 Matthias Felleisen在1990年代中期建立了PLT 一開始為一個研究團隊 不久後逐漸投入程式設計師入門教材的專案開發 在1995年1月 這個團隊決定開發一個建立在 Scheme函數式程式語言上的教學用程式語言環境 Mattew Flatt 簡單的從 libscheme 中將 MrEd Racket 的原始虛擬機器 wxWidgets 與一些其他的免費系統結合 接下來的幾年內 由 Flatt Robby Findler Shriram Krishnamurthi Cormac Flanagan 和其他許多人組成的團隊推出了 DrScheme 一個給 Scheme 程式設計新手的程式設計環境 也作為弱型別程式語言的研究環境 當時 DrScheme 主要支援的程式語言叫做 PLT Scheme 在此同時 該團隊也開始為中學教師開設研習課程 教授他們學習程式設計與函數式程式設計 這些老師和他們的學生所做的現場測試提供了團對專案開發方向重要的依據 在接下來的幾年中 PLT 團隊為 DrScheme 加入了教學用語言 例如 代數步進器 13 讀取 求值 輸出循環 constructor based printer 和其他許多發明 推出了一套有應用價值的程式教學環境 2001年 核心團隊 Felleisen Findler Flatt Krishnamurthi 也編纂和發行了他們的第一本教科書 程序设计方法 融入了許多他們的教學理念 在2010年6月7日 PLT Scheme被重命名为Racket 14 代碼範例 编辑杨辉三角形 代碼來自 rosettacode lang racket define next row row map cons 0 row append row 0 define triangle row rows if rows 0 cons row triangle next row row rows 1 triangle list 1 5 運行後顯示 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 繪製迭代8次的 謝爾賓斯基三角形 代碼來自 Racket 官網 nbsp The result of this program as shown in 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 在代碼的第一行使用 lang來使用不同的方言 下面的範例使用 Racket 的一種靜態類型的方言 Typed Racket 計算階層 lang typed racket fact Integer gt Integer define fact n if zero n 1 n fact n 1 註釋 编辑 Typed Racket 2014 03 05 原始内容存档于2020 11 11 Lazy Racket 2014 03 05 原始内容存档于2021 04 19 Scribble 2014 03 05 原始内容存档于2022 12 11 FrTime 2014 03 05 原始内容存档于2023 01 16 Strickland T S Fellesisen Matthias DLS 2010 Contracts for First Class Classes PDF 2010 2014 03 05 原始内容 PDF 存档于2013 05 23 Bonnaire Sergeant Ambrose A Practical Optional Type System for Clojure 学位论文 The University of Western Australia 2012 Sperber Michael Dybvig R Kent Flatt Matthew Van Straaten Anton et al Revised6 Report on the Algorithmic Language Scheme R6RS Scheme Steering Committee August 2007 2011 09 13 原始内容存档于2013 06 25 引文格式1维护 显式使用等标签 link Racket v8 10 2023年8月16日 2023年8月16日 PLT Scheme 2014 03 05 原始内容存档于2014 03 05 What does PLT stand for 2014 03 05 原始内容存档于2014 08 21 DrRacket 2014 03 05 原始内容存档于2014 03 05 Matthias Felleisen et al The Racket Manifesto March 25 2015 原始内容存档于2015年4月2日 引文格式1维护 显式使用等标签 link 存档副本 PDF 2014 03 12 原始内容存档 PDF 于2013 04 30 From PLT Scheme to Racket Racket lang org 2011 08 17 原始内容存档于2013 05 30 外部連結 编辑官方网站 取自 https zh wikipedia org w index php title Racket amp oldid 75640327, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。