口子念什么| 天狼星在什么位置| 78年属什么| 尿道口为什么叫马眼| 有鸟飞进屋是什么预兆| 乙肝表面抗原250是什么意思| 肝脏钙化灶是什么意思| 为什么南极比北极冷| 转氨酶偏高是什么意思| 有什么病| 眼睛散光是什么原因造成的| 土人参长什么样| 为什么海螺里有大海的声音| 缺铁性贫血的人吃什么补血最快| 荨麻疹是什么病| 担担面是什么面| 厌食症吃什么药| 肾结石有什么症状表现| 奔走相告的走是什么意思| 早射吃什么药可以调理| 数字7代表什么意思| nlp是什么意思| 男人脚底发热是什么病| 两个人可以玩什么| 赤豆是什么豆| 老舍原名叫什么| 无什么为什么| 吃什么降三高最好| 太阳穴有痣代表什么| 清华校长什么级别| 血管疼是什么原因| 尿蛋白质弱阳性是什么意思| dha是补什么的| 心脏在人体什么位置| 提踵是什么意思| 老上火是什么原因造成的| 青团是用什么做的| 脑疝是什么意思| 羽毛球拍磅数是什么意思| 阴唇为什么一个大一个小| 什么的羊群| 盐酸西替利嗪片主治什么| tips什么意思| 对什么有好处的英文| 志气是什么意思| 中暑吃什么| 闻鸡起舞是什么生肖| 四肢无力吃什么药| 多春鱼为什么全是籽| 思量是什么意思| 西兰花不能和什么一起吃| 药流前需要做什么检查| 十二朵玫瑰花代表什么意思| adp是什么| 残联是什么性质的单位| 尾盘跳水意味着什么| 乌豆和黑豆有什么区别| 什么是铅| 十二指肠憩室是什么意思| 1994年属狗五行属什么| d2聚体高是什么意思| 藏红花能治什么病| 舌苔发白吃什么药| 低钾会有什么症状| 不适是什么意思| 如何知道自己适合什么发型| jasonwood是什么牌子| p医学代表什么意思| 佛跳墙是什么菜系| grace什么意思中文| 银杏树的叶子像什么| 自言自语是什么原因导致| 钙化影是什么意思| 为什么来月经会头疼| 景泰蓝是什么地方的特种工艺| 红黑相间的蛇是什么蛇| 金色和什么颜色搭配好看| 吃什么食品减肥| 手抖是什么原因| 碧根果和核桃有什么区别| 结婚40年是什么婚| 胸有成竹是什么生肖| 牙疼吃什么食物好得快| 68年属猴的是什么命| 女人长期做俯卧撑有什么效果| 七寸是什么意思| 桂林山水下一句是什么| 五彩缤纷是什么生肖| 大脚趾头麻木是什么原因| 情人果是什么| 血淋是什么意思| 腰痛是什么原因引起的| 心率过快吃什么药| 驼背挂什么科| 驴胶补血颗粒什么时候喝最好| 骨折挂什么科| 三元及第是什么意思| prada什么牌子| 什么的窗户| 肺部有结节要注意什么| 9月18日是什么日子| 寿眉属于什么茶| 蛋白电泳是查什么的| 小猫什么时候驱虫| 百毒不侵是什么意思| 一个西一个米念什么| 武则天是什么星座的| 宫腔内无回声区是什么意思| 肚子疼用什么药好| 三尖瓣反流是什么意思| 脑梗不能吃什么| 滴虫性阴道炎吃什么药| 过期的酸奶有什么用| 牛骨煲汤搭配什么最好| 7月8号什么星座| 什么是裙带菜| 晚上11点多是什么时辰| 低烧吃什么| 基础代谢是什么意思| 桑树叶有什么功效| 男人射精快吃什么药| 什么原因引起尿路感染| 硅胶是什么材料| 脚底板发热是什么原因| 舌苔黄是什么原因| 男人下面流脓吃什么药| 腰酸是什么病的前兆| 胰岛素抵抗吃什么药| 芒果与什么不能一起吃| 解脲脲原体阳性吃什么药| 毡房是什么意思| 代沟是什么意思| 腿肿脚肿是什么病的前兆| 莫迪是什么种姓| 血脂稠吃什么药最好| 女生胸部什么时候停止发育| 黑枸杞泡水是什么颜色| 羊膜束带是什么意思| 打开图片用什么软件| 深红色是什么颜色| 海马用什么呼吸| 半夜醒来口干舌燥是什么原因| 轻如鸿毛是什么意思| 熬夜有什么坏处| balea是什么牌子| 黑枸杞有什么功效| 肺主什么| 屁多还臭是什么原因| 癌症晚期吃什么食物好| 12.31什么星座| 蟑螂长什么样| 女性私处长痘痘是什么原因| 儿时是什么意思| 边界清是什么意思| ed是什么意思| 二十年婚姻是什么婚| 手心热吃什么药| 东莞市委书记什么级别| 蛋白尿吃什么食物好| sy是什么意思| 毛主席什么时候去世| 屁多又臭是什么原因| 预防脑出血吃什么药| 结婚长明灯有什么讲究| 生意兴隆是什么生肖| 身怀六甲什么意思| 恚是什么意思| 菌痢的症状是什么样| 早上九点到十点是什么时辰| 梦见前女友是什么预兆| 手肘黑是什么原因| 挂急诊和门诊有什么区别| 脑鸣吃什么药| 心慌是什么病| bell什么意思| 肺火旺吃什么药| 犬瘟是什么原因引起的| 六七是什么意思| 分泌是什么意思| 汲汲营营是什么意思| 莲花代表什么象征意义| 地皮菜是什么菜| 自锁是什么意思| 一什么马车| 睾丸疼痛吃什么药最好| 正军级是什么级别| 豆皮炒什么好吃| gst是什么| 面包是什么做的| 室内用什么隔墙最便宜| 什么叫辟谷| 为什么正骨后几天越来越疼| 什么是香油| 昵称是什么| 孕妇梦到蛇是什么意思| 嵌甲去医院挂什么科| 安抚奶嘴什么时候开始用| 夏天是什么| 化肥对人体有什么危害| 牙齿发炎吃什么消炎药| 骑士是什么意思| 妇科检查bv阳性是什么意思| 月色真美是什么意思| 什么护肤产品补水最好| 子宫内膜炎是什么原因造成的| 夏天适合吃什么食物| 周杰伦有什么病| 萎缩性阴道炎用什么药| 子宫内膜囊性增生是什么意思| 梦见坐飞机是什么预兆| 腐竹炒什么好吃| 海豚吃什么食物| 老死不相往来什么意思| 家有蝙蝠是什么兆头| ug是什么意思| spa按摩是什么意思| 说笑了是什么意思| 结节低回声是什么意思| 气场强大是什么意思| 红花泡水喝有什么功效和作用| 女人小肚子疼是什么原因| 吃什么药能让月经马上来| fm是什么| 什么方法不掉头发| 金黄金黄的什么| 凹儿念什么| 肚子一按就痛什么原因| 黑糖是什么糖| 琥珀是什么意思| 菜粥里面放什么菜最好| 鸡蛋炒什么好吃| 肛门疼是什么原因| 柏读什么| 捡尸是什么意思| 痿证是什么病| 维生素h的作用及功能主治是什么| 自闭是什么意思| 肚子跳动是什么原因| ddp是什么化疗药| 单核细胞是什么意思| 刀模是什么| 前列腺增生伴钙化是什么意思| 老干部是什么意思| 老鼠最怕什么气味驱赶| 肌酐500多属于什么期怎么治疗| 检查肺部挂什么科室| 乙肝小三阳是什么| 五福临门是什么意思| 脚底长痣有什么说法| 啤酒兑什么饮料好喝| 孕妇用什么驱蚊最好| 睾酮是什么| 中性粒细胞高是什么原因| 早搏吃什么药效果好| 拉肚子适合吃什么| 微笑是什么意思| 眼睛出现飞蚊症什么原因怎么办| 火乐念什么| 毓读什么| 吃什么最补肾壮阳| 女人抖腿代表什么意思| 家里为什么有跳蚤| 有什么事| 婚检检查什么项目| 百度
百度 另据了解,从今年起到2020年,济南将对长岭山、大狸猫山、老君崖、老虎山、小南瓜山、饵山、老虎山、牛角山、官山橛、黄石岩、皇上岭、小姑山、双牛山、老波智、石屋门、黑峪顶、车脚山、东边山、陡岭、小白云山、斩岭子、朱凤山、脱缰岭等62座山体进行绿化提升。

Racket is a general-purpose, multi-paradigm programming language. The Racket language is a modern dialect of Lisp and a descendant of Scheme. It is designed as a platform for programming language design and implementation.[9] In addition to the core Racket language, Racket is also used to refer to the family of programming languages[10] and set of tools supporting development on and with Racket.[11] Racket is also used for scripting, computer science education, and research.

Racket
DrRacket on Linux
ParadigmMulti-paradigm: functional, imperative, logic, meta, modular, object-oriented, reflective
FamilyLisp
Designed byPLT Inc.
DeveloperPLT Inc.
First appearedJanuary 28, 1995; 30 years ago (2025-08-07)
Stable release
8.17[1] Edit this on Wikidata / 17 May 2025; 2 months ago (17 May 2025)
Typing disciplineDynamic, static, strong
Platformx86, PowerPC, SPARC, MIPS, ARM
OSCross-platform
LicenseMIT or Apache 2.0[2]
Filename extensions.rkt[3]
Websiteracket-lang.org
Major implementations
Racket, RacketScript Racket to JavaScript (ES6) compiler, Pycket a Racket implementation using RPython.
Dialects
Typed Racket, FrTime, Lazy Racket, Scribble
Influenced by
Eiffel,[4] Scheme
Influenced
Clojure,[5] Rust,[6][7] Scheme (R6RS)[8]

The Racket platform provides an implementation of the Racket language (including a runtime system,[12] libraries, and compiler supporting several compilation modes: machine code, machine-independent, interpreted, and JIT) along with the DrRacket integrated development environment (IDE) written in Racket.[13] Racket is used by the ProgramByDesign outreach program, which aims to turn computer science into "an indispensable part of the liberal arts curriculum".[14][15]

The core Racket language is known for its extensive macro system which enables creating embedded and domain-specific languages, language constructs such as classes or modules, and separate dialects of Racket with different semantics.[16][17][18][19]

The platform distribution is free and open-source software distributed under the Apache 2.0 and MIT licenses.[20] Extensions and packages written by the community may be uploaded to Racket's package catalog.

History

edit

Development

edit

Matthias Felleisen founded PLT Inc. in the mid 1990s, first as a research group, soon after as a project dedicated to producing pedagogic materials for novice programmers (lectures, exercises/projects, software). In January 1995, the group decided to develop a pedagogic programming environment based on Scheme. Matthew Flatt cobbled together MrEd, the original virtual machine for Racket, from libscheme,[21] wxWidgets, and a few other free systems.[22] In the years that followed, a team including Flatt, Robby Findler, Shriram Krishnamurthi, Cormac Flanagan, and many others produced DrScheme, a programming environment for novice Scheme programmers and a research environment for gradual typing.[13] The main development language that DrScheme supported was named PLT Scheme.

In parallel, the team began conducting workshops for high school teachers, training them in program design and functional programming. Field tests with these teachers and their students provided essential clues for directing the development.

Over the following years, PLT added teaching languages, an algebraic stepper,[23] a transparent read–eval–print loop, a constructor-based printer, and many other innovations to DrScheme, producing an application-quality pedagogic program development environment. By 2001, the core team (Felleisen, Findler, Flatt, Krishnamurthi) had also written and published their first textbook, How to Design Programs, based on their teaching philosophy.

The Racket Manifesto[9] details the principles driving the development of Racket, presents the evaluation framework behind the design process, and details opportunities for future improvements.

Version history

edit

The first generation of PLT Scheme revisions introduced features for programming in the large with both modules and classes. Version 42 introduced units – a first-class module system – to complement classes for large scale development.[24] The class system gained features (e.g. Java-style interfaces) and also lost several features (e.g. multiple inheritance) throughout these versions.[16] The language evolved throughout a number of successive versions, and gaining milestone popularity in Version 53, leading to extensive work and the following Version 100, which would be equivalent to a "1.0" release in current popular version systems.

The next major revision was named Version 200, which introduced a new default module system that cooperates with macros.[24] In particular, the module system ensures that run-time and compile-time computation are separated to support a "tower of languages".[25] Unlike units, these modules are not first-class objects.

Version 300 introduced Unicode support, foreign library support, and refinements to the class system.[24] Later on, the 300 series improved the performance of the language runtime with an addition of a JIT compiler and a switch to a default generational garbage collection.

By the next major release, the project had switched to a more conventional sequence-based version numbering. Version 4.0 introduced the #lang shorthand to specify the language that a module is written in. Further, the revision introduced immutable pairs and lists, support for fine-grained parallelism, and a statically-typed dialect.[26]

On 7 June 2010, PLT Scheme was renamed Racket.[27] The renaming coincided with the release of Version 5.0. Subsequently, the graphical user interface (GUI) backend was rewritten in Racket from C++ in Version 5.1 using native UI toolkits on all platforms.[22] Version 5.2 included a background syntax checking tool, a new plotting library, a database library, and a new extended REPL.[28] Version 5.3 included a new submodule feature for optionally loaded modules,[29] new optimization tools, a JSON library, and other features.[30] Version 5.3.1 introduced major improvements to DrRacket: the background syntax checker was turned on by default and a new documentation preview tool was added.[31]

In version 6.0, Racket released its second-generation package management system. As part of this development, the principal DrRacket and Racket repository was reorganized and split into a large set of small packages, making it possible to install a minimal racket and to install only those packages needed.[32]

Version 7 of Racket was released with a new macro expander written in Racket as part the preparations for supporting moving to the Chez Scheme runtime system and supporting multiple runtime systems.[33] [34] On 19 November 2019, Racket 7.5 was released. The license of Racket 7.5 was less restrictive. They use now either the Apache 2.0 license or the MIT license.[35][36]

On 2021 February 13, Racket 8.0 was released. Racket 8.0 marks the first release where Racket with the Chez Scheme runtime system, known as Racket CS, is the default implementation. Racket CS is faster, easier to maintain and develop, backward-compatible with existing Racket programs, and has better parallel garbage collection.[37]

Features

edit

Racket's core language includes macros, modules, lexical closures, tail calls, delimited continuations,[38] parameters (fluid variables), software contracts,[39] green threads and OS threads,[40][41][42] and more. The language also comes with primitives, such as eventspaces and custodians, which control resource management and enables the language to act like an operating system for loading and managing other programs.[12] Further extensions to the language are created with the powerful macro system, which together with the module system and custom parsers can control all aspects of a language.[43] Most language constructs in Racket are implemented as macros in the base language. These include a mixin class system,[16] a component (or module) system as expressive as opaque ascription in the ML module system,[17] and pattern matching.

Further, the language features the first contract system for a higher-order programming language.[44] Racket's contract system is inspired by the Design by Contract work for Eiffel and extends it to work for higher-order values such as first-class functions, objects, reference cells, and so on. For example, an object that is checked by a contract can be ensured to make contract checks when its methods are eventually invoked.

Racket includes both bytecode and JIT (JIT) compilers. The bytecode compiler produces an internal bytecode format run by the Racket virtual machine, and the JIT compiler translates bytecode to machine code at runtime.

Since 2004, the language has also shipped with PLaneT, a package manager that is integrated into the module system so that third-party libraries can be transparently imported and used. Also, PLaneT has a built-in versioning policy to prevent dependency hell.[45]

At the end of 2014, much of Racket's code was moved into a new packaging system separate from the main code base. This new packaging system is serviced by a client program named raco. The new package system provides fewer features than PLaneT; a blog post by Jay McCarthy on the Racket blog explains the rationale for the change and how to duplicate the older system.[46]

Integrated language extensibility and macros

edit

The features that most clearly distinguish Racket from other languages in the Lisp family are its integrated language extensibility features that support building new domain-specific and general-purpose languages. Racket's extensibility features are built into the module system to allow context-sensitive and module-level control over syntax.[18] For example, the #%app syntactic form can be overridden to change the semantics of function application. Similarly, the #%module-begin form allows arbitrary static analysis of the entire module.[18] Since any module can be used as a language, via the #lang notation, this effectively means that virtually any aspect of the language can be programmed and controlled.

The module-level extensibility features are combined with a Scheme-like hygienic macro system, which provides more features than Lisp's s-expression manipulation system,[47][48] Scheme 84's hygienic extend-syntax macros, or R5RS's syntax-rules. Indeed, it is fair to say that the macro system is a carefully tuned application programming interface (API) for compiler extensions. Using this compiler API, programmers can add features and entire domain-specific languages in a manner that makes them completely indistinguishable from built-in language constructs.

The macro system in Racket has been used to construct entire language dialects. This includes Typed Racket, which is a gradually typed dialect of Racket that eases the migration from untyped to typed code,[49] Lazy Racket—a dialect with lazy evaluation,[50] and Hackett, which combines Haskell and Racket.[51] The pedagogical programming language Pyret was originally implemented in Racket.[52][53]

Other dialects include FrTime (functional reactive programming), Scribble (documentation language),[54] Slideshow (presentation language),[55] and several languages for education.[56][57]

Racket's core distribution provides libraries to aid the development of programming languages.[18] Such languages are not restricted to s-expression based syntax. In addition to conventional readtable-based syntax extensions, the directive #lang enables the invocation of arbitrary parsers, which can be implemented using the parser tools library.[58] See Racket logic programming for an example of such a language.

Programming environment

edit

The language platform provides a self-hosted IDE[13] named DrRacket, a continuation-based web server,[59] a graphical user interface,[22] and other tools. As a viable scripting tool with libraries like common scripting languages, it can be used for scripting the Unix shell. It can parse command-line arguments and execute external tools.

DrRacket IDE

edit

DrRacket (formerly DrScheme) is widely used among introductory computer science courses that teach Scheme or Racket and is lauded for its simplicity and appeal to beginner programmers. The IDE was originally built for use with the TeachScheme! project (now ProgramByDesign), an outreach effort by Northeastern University and a number of affiliated universities for attracting high school students to computer science courses at the college level.

The editor provides highlighting for syntax and run-time errors, parenthesis matching, a debugger and an algebraic stepper. Its student-friendly features include support for multiple "language levels" (Beginning Student, Intermediate Student and so on). It also has integrated library support, and sophisticated analysis tools for advanced programmers. Further, module-oriented programming is supported with the module browser, a contour view, integrated testing and coverage measurements, and refactoring support. It provides integrated, context-sensitive access to an extensive hyper-linked help system named "Help Desk".

DrRacket is available for Windows, macOS, Unix, and Linux with the X Window System and programs behave similarly on all these platforms.

Code examples

edit

Here is a trivial "Hello, World!" program:

#lang racket
"Hello, World!"

Running this program produces the output:

"Hello, World!"

Here is a slightly less trivial program:

 
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))))))

This program, taken from the Racket website, draws a Sierpinski triangle, nested to depth 8.

Using the #lang directive, a source file can be written in different dialects of Racket. Here is an example of the factorial program in Typed Racket, a statically typed dialect of Racket:

#lang typed/racket

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

Implementations

edit

Racket currently has two implementations. Both support Linux, Windows and MacOS on a variety of architectures and are supported as at version 8.8 (2023). The default implementation uses the Chez Scheme incremental compiler and runtime. The alternate implementation generates platform-independent bytecode and uses Just-in-time compilation to generate machine code as it is loaded.[60]

In addition, there are experimental implementations:

  • RacketScript is an experimental Racket to JavaScript (ES6) compiler. It allows programmers to use both JavaScript’s and Racket’s ecosystem and aims to make this interoperability as smooth as possible.[61]
  • Pycket is a Racket implementation generated using the RPython framework.[62]

Applications and practical use

edit

Apart from having a basis in programming language theory, Racket was designed as a general-purpose language for production systems. Thus, the Racket distribution features an extensive library that covers systems and network programming, web development,[59] a uniform interface to the underlying operating system, a dynamic foreign function interface,[63] several flavours of regular expressions, lexer/parser generators,[58] logic programming, and a complete GUI framework.

Racket has several features useful for a commercial language, among them an ability to compile standalone executables under Windows, macOS, and Unix, a profiler and debugger included in the integrated development environment (IDE), and a unit testing framework.

Racket has been used for commercial projects and web applications. A notable example is the Hacker News website, which runs on Arc, which is developed in Racket. Naughty Dog has used it as a scripting language in several video games.[64]

Racket is used to teach students algebra through game design in the Bootstrap program.[65]

References

edit
  1. ^ "Racket v8.17". 17 May 2025. Retrieved 17 May 2025.
  2. ^ Tobin-Hochstadt, Sam; Gerard, Sage; Dueck, Joel; Flatt, Matthew; Software Freedom Conservancy; Chestek, Pamela (2025-08-07). "Completing Racket's relicensing effort". Retrieved 2025-08-07.
  3. ^ "DrRacket Files". Retrieved 21 July 2019. 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 (Thesis). The University of Western Australia.
  6. ^ "Planet2 questions".
  7. ^ "Rust Bibliography". GitHub. 23 November 2022.
  8. ^ Sperber, Michael; Dybvig, R. Kent; Flatt, Matthew; Van Straaten, Anton; et al. (August 2007). "Revised6 Report on the Algorithmic Language Scheme (R6RS)". Scheme Steering Committee. Retrieved 2025-08-07.
  9. ^ a b Felleisen, M.; Findler, R.B.; Flatt, M.; Krishnamurthi, S.; Barzilay, E.; McCarthy, J.; Tobin-Hochstadt, S. (2015). "The Racket Manifesto" (PDF). Proceedings of the First Summit on Advances in Programming Languages: 113–128.
  10. ^ "Dialects of Racket and Scheme". Retrieved 2025-08-07.
  11. ^ "Welcome to Racket". Retrieved 2025-08-07.
  12. ^ a b Flatt; Findler; Krishnamurthi; Felleisen (1999). Programming Languages as Operating Systems (or, Revenge of the Son of the Lisp Machine). International Conference on Functional Programming.
  13. ^ a b c Findler; Clements; Flanagan; Flatt; Krishnamurthi; Steckler; Felleisen (2001). "DrScheme: A Programming Environment for Scheme" (PDF). Journal of Functional Programming.
  14. ^ Felleisen; Findler; Flatt; Krishnamurthi (2004). "The TeachScheme! Project: Computing and Programming for Every Student". Journal of Computer Science Education.
  15. ^ "Overview". Program by Design. Archived from the original on 2025-08-07. Retrieved 2025-08-07.
  16. ^ a b c Flatt, M.; Findler, R. B.; Felleisen, M. (2006). "Scheme with Classes, Mixins, and Traits" (PDF). Asian Symposium on Programming Languages and Systems.
  17. ^ a b Flatt, M.; Felleisen, M. (1998). "Units: Cool Modules for Hot Languages". Programming Language Design and Implementation.
  18. ^ a b c d Tobin-Hochstadt, S.; St-Amour, V.; Culpepper, R.; Flatt, M.; Felleisen, M. (2011). "Languages as Libraries" (PDF). Programming Language Design and Implementation.
  19. ^ Felleisen, Matthias; Findler, Robert Bruce; Flatt, Matthew; Krishnamurthi, Shriram; Barzilay, Eli; McCarthy, Jay; Tobin-Hochstadt, Sam (2018). "A Programmable Programming Language". Communications of the ACM. 61 (3): 62–71. doi:10.1145/3127323. S2CID 3887010.
  20. ^ "Racket: Software License". Retrieved 2025-08-07.
  21. ^ Benson, Brent W. Jr. (26–28 October 1994). "libscheme: Scheme as a C Library". Written at Santa Fe, NM. Proceedings of the USENIX Symposium on Very High Level Languages. Berkeley, CA: USENIX Association. pp. 7–19. ISBN 978-1880446652. Retrieved 7 July 2013.
  22. ^ a b c "Rebuilding Racket's Graphics Layer". 2025-08-07. Retrieved 2025-08-07.
  23. ^ Clements, J.; Flatt, M.; Felleisen, M. (2001). "Modeling an Algebraic Stepper" (PDF). European Symposium on Programming Languages.
  24. ^ a b c "Racket Core Release Notes". Archived from the original on 2025-08-07. Retrieved 2025-08-07.
  25. ^ Flatt, M. (2002). "Composable and Compilable Macros". International Conference on Functional Programming.
  26. ^ "PLT Scheme version 4.0". 2025-08-07. Archived from the original on 2025-08-07. Retrieved 2025-08-07.
  27. ^ "From PLT Scheme to Racket". Racket-lang.org. Retrieved 2025-08-07.
  28. ^ "Racket 5.2". PLT, Inc. 2025-08-07. Retrieved 2025-08-07.
  29. ^ "Submodules". 2025-08-07. Retrieved 2025-08-07.
  30. ^ "Racket 5.3". PLT, Inc. 2025-08-07. Retrieved 2025-08-07.
  31. ^ "Racket 5.3.1". PLT, Inc. 2025-08-07. Retrieved 2025-08-07.
  32. ^ "Racket 6.0". PLT, Inc. 2025-08-07. Retrieved 2025-08-07.
  33. ^ "Racket-on-Chez Status: January 2018". 2025-08-07. Archived from the original on 2025-08-07. Retrieved 2025-08-07.
  34. ^ "building Racket on Chez Scheme (Experience Report)" (PDF). 2025-08-07. Retrieved 2025-08-07.
  35. ^ "Racket 7.5 release". Packt Hub. 22 November 2019. Retrieved 2025-08-07.
  36. ^ "Racket v7.5". Racket | Blog. Retrieved 2025-08-07.
  37. ^ "Racket v8.0".
  38. ^ Flatt, M.; Yu, G.; Findler, R. B.; Felleisen, M. (2007). "Adding Delimited and Composable Control to a Production Programming Environment" (PDF). International Conference on Functional Programming.
  39. ^ "Contracts".
  40. ^ "Threads".
  41. ^ "Futures".
  42. ^ "Places".
  43. ^ Flatt, Matthew (2012). "Creating Languages in Racket". Communications of the ACM. Retrieved 2025-08-07.
  44. ^ Findler, R. B.; Felleisen, M. (2002). "Contracts for Higher-Order Functions" (PDF). International Conference on Functional Programming.
  45. ^ Matthews, J. (2006). "Component Deployment with PLaneT: You Want it Where?". Scheme and Functional Programming Workshop.
  46. ^ "The Racket package system and Planet".
  47. ^ Flatt, Matthew (2002). "Composable and Compilable Macros, You Want it When?" (PDF). International Conference on Functional Programming.
  48. ^ Flatt, Culpepper, Darais, Findler, Macros that Work Together; Compile-Time Bindings, Partial Expansion, and Definition Contexts
  49. ^ Tobin-Hochstadt, S.; Felleisen, M. (2008). "The Design and Implementation of Typed Scheme". Principles of Programming Languages.
  50. ^ Barzilay, E.; Clements, J. (2005). "Laziness Without All the Hard Work: Combining Lazy and Strict Languages for Teaching". Functional and Declarative Programming in Education.
  51. ^ "The Hackett Programming Language". Alexis King's Blog. Retrieved 16 June 2019.
  52. ^ The Pyret Crew (24 May 2011). "The Pyret Code; or A Rationale for the Pyret Programming Language". Pyret. Retrieved 16 June 2019.
  53. ^ "Programming and Programming Languages". Index of /. 20 September 2017. Retrieved 16 June 2019.
  54. ^ Flatt, M.; Barzilay, E.; Findler, R. B. (2009). "Scribble: Closing the Book on Ad Hoc Documentation Tools". International Conference on Functional Programming.
  55. ^ Findler, R. B.; Flatt, M. (2004). "Slideshow: Functional Presentations". International Conference on Functional Programming.
  56. ^ Felleisen, M.; Findler, R. B.; Flatt, M.; Krishnamurthi, S. (2009). "A Functional I/O System (or Fun for Freshman Kids)" (PDF). International Conference on Functional Programming.
  57. ^ Felleisen, M.; Findler, R. B.; Flatt, M.; Krishnamurthi, S. (2004). "The Structure and Interpretation of the Computer Science Curriculum" (PDF). Journal of Functional Programming. 14 (4): 365–378. doi:10.1017/S0956796804005076.
  58. ^ a b "Parser Tools: lex and yacc-style Parsing". Retrieved 2025-08-07.
  59. ^ a b Krishnamurthi, Hopkins; McCarthy; Graunke; Pettyjohn; Felleisen (2007). "Implementation and Use of the PLT Scheme Web Server" (PDF). Journal of Higher-Order and Symbolic Programming. 20 (4): 431–460. doi:10.1007/s10990-007-9008-y. S2CID 17731194.
  60. ^ Implementations
  61. ^ RacketScript
  62. ^ Pycket
  63. ^ Barzilay, E.; Orlovsky, D. (2004). "Foreign Interface for PLT Scheme" (PDF). Scheme and Functional Programming.
  64. ^ "Functional mzScheme DSLs in Game Development". Retrieved 2025-08-07.
  65. ^ "Bootstrap". bootstrapworld.org. Retrieved 2025-08-07.

Further reading

edit
edit
1958 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015 2020
 LISP 1, 1.5, LISP 2(abandoned)
 Maclisp
 Interlisp
 MDL
 Lisp Machine Lisp
 Scheme  R5RS  R6RS  R7RS small
 NIL
 ZIL (Zork Implementation Language)
 Franz Lisp
 muLisp
 Common Lisp  ANSI standard
 Le Lisp
 MIT Scheme
 XLISP
 T
 Chez Scheme
 Emacs Lisp
 AutoLISP
 PicoLisp
 Gambit
 EuLisp
 ISLISP
 OpenLisp
 PLT Scheme  Racket
 newLISP
 GNU Guile
 Visual LISP
 Clojure
 Arc
 LFE
 Hy
什么是宫腔镜手术 太上老君的坐骑是什么 什么叫轻度脂肪肝 屈光不正是什么意思 皮肤黑的人穿什么颜色的衣服好看
缺钙吃什么补得最快 胚由什么组成 pda是什么 仓鼠能吃什么 元旦北京有什么好玩的
子时右眼跳是什么预兆 尿酸高适合吃什么菜 介入手术是什么意思 ab制是什么意思 什么地工作
小孩吃牛肉有什么好处 打胎后要注意什么 联合创始人是什么意思 扩词是什么 三七主要治什么病
暹什么意思hcv8jop4ns9r.cn 口了又一是什么字hcv7jop5ns5r.cn 幻和是什么意思hcv8jop7ns6r.cn 什么是脱敏治疗hcv8jop2ns0r.cn 轻度郁症有什么表现hcv8jop8ns4r.cn
虎属什么五行beikeqingting.com 什么情况下要打破伤风hcv9jop7ns0r.cn 什么头什么耳hcv8jop6ns1r.cn 什么的果实hcv9jop4ns5r.cn 坐小月子可以吃什么水果hcv7jop9ns0r.cn
梦见盖新房子是什么意思hcv9jop1ns9r.cn msm是什么意思hcv8jop1ns3r.cn 一抽一抽的打嗝叫什么travellingsim.com 肺积水是什么原因引起的hcv9jop4ns2r.cn 量贩式ktv什么意思bfb118.com
条子是什么意思hcv7jop5ns5r.cn 核糖是什么hcv9jop7ns3r.cn 感冒反复发烧是什么原因引起的hcv8jop5ns9r.cn 为什么要割包皮onlinewuye.com wz是什么意思hcv7jop9ns1r.cn
百度