经常放屁吃什么药好| 无机盐包括什么| 长命百岁的动物是什么| 忽必烈和成吉思汗是什么关系| 建档需要做什么检查| 得宝松是什么药| 淋巴细胞百分比高是什么原因| 吃土豆有什么好处和坏处| 真丝丝绒是什么面料| 91年出生的属什么| 眼睛皮痒是什么原因| 理想主义者是什么意思| 睡觉后脑勺出汗多是什么原因| 鸭子是什么职业| 基因突变是什么病| 痛风挂什么科就医| 吹空调流鼻涕吃什么药| 尿蛋白吃什么药| 双鱼座的上升星座是什么| 冠脉ct和冠脉造影有什么区别| 玉米淀粉是什么| 晚上睡觉放屁多是什么原因| 项链突然断了预示什么| skechers是什么牌子| 总胆汁酸高是什么意思| 海誓山盟是什么意思| 繁字五行属什么| 双非是什么意思| 清炖排骨放什么调料| 山对什么| 什么是尿潴留| 风热感冒用什么药好| 早上起床腰疼是什么原因| 末梢神经炎吃什么药| 便秘吃什么食物| 肌酐低什么原因| 鼓刹和碟刹有什么区别| 二甲双胍不能和什么药一起吃| 沙发客是什么意思| 为什么说啄木鸟是树的医生| junior什么意思| 25年是什么婚| 虾仁不能和什么食物一起吃| 肝左叶囊性灶什么意思| 一个月来两次月经是什么原因| 女性私处长痘痘是什么原因| 胸腔积液叩诊什么音| 水泊梁山什么意思| 猴魁属于什么茶| 酸菜鱼里面加什么配菜好吃| 因公殉职是什么意思| 鹿茸有什么作用| 月经一直不干净是什么原因| 999是什么电话| 麦穗是什么牌子| 师团长是什么级别| 鸡蛋和面粉可以做什么好吃的| 足石念什么| 梦见煤气罐爆炸是什么意思| 人工虎骨粉是什么做的| 阴道息肉长什么样| 吃b族维生素有什么好处| 孕妇吃什么水果| 1994年属狗的是什么命| 长疖子用什么药| 肾积水是什么病严重吗| 什么时候洗头是最佳时间| 偏光是什么意思| 立夏节吃什么| 碳十四检测是查什么的| 举世无双什么意思| 开理疗店需要什么证件| 新疆有什么民族| 15年什么婚| 什么言什么语| 怎么查自己五行缺什么| 血糖高适合吃什么蔬菜| 维生素b2吃多了有什么副作用| 礼仪是什么| 吃什么食物补脾虚| 生理期吃什么水果| 走路脚后跟疼是什么原因| 秋葵什么人不能吃| 初音未来是什么| 儿童嗓子疼吃什么药好| 一面什么| 植物神经紊乱看什么科| 今天吃什么随机| 抵触是什么意思| 生殖感染用什么消炎药效果好| 高血糖吃什么蔬菜| 喉咙吞口水痛吃什么药| 中性粒细胞比率偏高是什么意思| 干咳是什么原因引起的| 贫血会出现什么症状| 莆田医院是什么意思| 吃什么降糖最快| 前列腺炎是什么原因引起的| 最大的动物是什么| 去火喝什么茶最好| 石榴是什么生肖| ck属于什么档次的品牌| 小三阳是什么病| nokia是什么牌子的手机| 腰疼吃点什么药| 什么降血脂效果最好的| 吃什么东西养胃| 肚子左边疼是什么原因| 357是什么意思| 肺癌靶向治疗是什么意思| 消炎药是什么药| 乐极生悲是什么意思| 金字旁的字和什么有关| 1963年是什么年| 留守儿童什么意思| 见多识广是什么生肖| 吃什么能降尿蛋白| 亚麻籽有什么功效| 肺部感染挂什么科| 哈尔滨市长什么级别| 菱形脸适合什么刘海| p波增宽是什么意思| 血糖低吃什么补得最快| 和包是什么| 树脂材料是什么| 咖喱是什么| 4月18号是什么星座| 头晕呕吐挂什么科| 偏瘫是什么意思| mr是什么意思| 1月11日是什么星座| 白领是什么| 血小板减少有什么危害| 卫生纸筒可以做什么| smt是什么意思| 凝血功能是什么意思| 天下无双是什么生肖| 领导喜欢什么样的员工| 男生早上为什么会晨勃| 意犹未尽什么意思| 痛风能吃什么肉| 晚黄瓜什么时候种| 孩子发烧按摩什么部位退烧| 汗脚是什么原因引起的| 湿疹怎么治用什么药膏| 男人腰痛吃什么药| m蛋白是什么| 用什么方法止咳| 骨裂什么症状| 鼻梁有痣代表什么| 圣旨是什么意思| 空明什么意思| 痛风吃什么菜好| 6像什么| 过敏性鼻炎吃什么药能快速缓解| 姿态万千的意思是什么| 快乐源泉是什么意思| 感冒吃什么菜比较好| 为什么高铁没有e座| 心肌缺血什么症状| 肛门挂什么科| 南瓜和窝瓜有什么区别| 鼻梁长痘是什么原因| 起床气是什么意思| 甲状腺滤泡性肿瘤是什么意思| sport什么牌子| 吃饭后肚子疼是什么原因| 一览无余是什么意思| 童心未泯什么意思| 1958属什么生肖| 脚底起水泡是什么原因| 红颜什么意思| 老心慌是什么原因| 半夜三更是什么生肖| 三位一体是什么意思| bff是什么意思| 淋巴结用什么药效果好| 什么是激素类药物| 户籍是指什么| 瓜尔胶是什么东西| 怎么知道自己五行缺什么| 耳洞发炎流脓用什么药| 喉炎雾化用什么药| 心悸是什么意思| 牙齿痛吃什么消炎药| 见招拆招下一句是什么| 大队书记是什么级别| 1956年是什么年| 鱼丸是什么做的| 党参长什么样图片| 姑爷是什么意思| 胃寒湿气重吃什么药效果最好| 咳嗽可以喝什么| 屁股上长痘痘是什么情况| 嘴唇紫色是什么原因| 海龟汤什么意思| 三手烟是什么| ifu是什么意思| 十一月四日是什么星座| 梦见自己拉屎是什么意思| 脱髓鞘病变是什么意思| 眩晕症挂什么科| 火腿肠是什么做的| 大小便失禁是什么原因| 腺样体面容是什么意思| 四百分能上什么大学| 汗疱疹吃什么药| 武汉市长是什么级别| 十年大运是什么意思| 手麻是什么原因引起的| 黑米和紫米有什么区别| 为什么射精是流出来的| 为什么会血糖高| 不约什么什么| 忧郁症挂什么科| 主治医师是什么级别| tm什么意思| 飞蓬草有什么功效| 汉字五行属什么| 腰间盘突出是什么症状| 肉便器是什么意思| 热疹用什么药膏最好| 住院报销需要什么材料| cartoon什么意思| 模卡是什么| 红烧肉可以放什么配菜| 东陵玉是什么玉| 2月29号是什么星座| 罗汉是什么意思| 有伤口吃什么消炎药| 广式腊肠炒什么菜好吃| 维和部队是干什么的| 胰岛素针头4mm和5mm有什么区别| 每天吃松子有什么好处| 心脏主要由什么组织构成| notebook什么意思| 肝内钙化灶是什么意思| 梦见打仗是什么意思| 大年初一是什么生肖| 形同陌路是什么意思| 心脏不好的人吃什么好| 空唠唠的意思是什么| 白癜风用什么药| 春天的花开秋天的风是什么歌| 吃什么能帮助睡眠| 闻思修是什么意思| 甜瓜是什么瓜| 产后什么时候来月经正常| 三个吉念什么| 扁桃体肿大是什么原因引起的| 舌炎吃什么药好得快| 大腿酸痛什么原因| 柏拉图式是什么意思| 百合是什么意思| 下肢水肿吃什么药| 月经总是提前是什么原因| 尿气味重是什么原因| 打牌老是输是什么原因| 阴道有腥味是什么原因| 高铁上为什么没有e座| 蚕屎有什么作用和功效| 试婚是什么意思啊| 为什么一喝酒就拉肚子| 结扎挂什么科| 百度Jump to content

吐槽红旗街万达面扑 吃了绿色的像要中毒一样

From Wikipedia, the free encyclopedia
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-06)
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]
百度 3月23日报道港媒称,来自意大利的X电动车辆公司(XEV)说,它即将在中国量产低速3D打印汽车。

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.

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-06). "Completing Racket's relicensing effort". Retrieved 2025-08-06.
  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-06.
  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-06.
  11. ^ "Welcome to Racket". Retrieved 2025-08-06.
  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-06. Retrieved 2025-08-06.
  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-06.
  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-06. Retrieved 2025-08-06.
  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-06. Retrieved 2025-08-06.
  25. ^ Flatt, M. (2002). "Composable and Compilable Macros". International Conference on Functional Programming.
  26. ^ "PLT Scheme version 4.0". 2025-08-06. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  27. ^ "From PLT Scheme to Racket". Racket-lang.org. Retrieved 2025-08-06.
  28. ^ "Racket 5.2". PLT, Inc. 2025-08-06. Retrieved 2025-08-06.
  29. ^ "Submodules". 2025-08-06. Retrieved 2025-08-06.
  30. ^ "Racket 5.3". PLT, Inc. 2025-08-06. Retrieved 2025-08-06.
  31. ^ "Racket 5.3.1". PLT, Inc. 2025-08-06. Retrieved 2025-08-06.
  32. ^ "Racket 6.0". PLT, Inc. 2025-08-06. Retrieved 2025-08-06.
  33. ^ "Racket-on-Chez Status: January 2018". 2025-08-06. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  34. ^ "building Racket on Chez Scheme (Experience Report)" (PDF). 2025-08-06. Retrieved 2025-08-06.
  35. ^ "Racket 7.5 release". Packt Hub. 22 November 2019. Retrieved 2025-08-06.
  36. ^ "Racket v7.5". Racket | Blog. Retrieved 2025-08-06.
  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-06.
  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-06.
  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-06.
  65. ^ "Bootstrap". bootstrapworld.org. Retrieved 2025-08-06.

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
五步蛇为什么叫五步蛇 拌黄瓜需要什么调料 手指盖空了是什么原因 潮汐车道是什么意思 忍辱负重是什么意思
什么车最长脑筋急转弯 卧室放什么花最好健康 秋葵什么人不能吃 塔利班是什么 为什么一到晚上就痒
cbt是什么意思 胸部里面有个圆圆的硬东西是什么 心房颤动是什么意思 铅是什么东西 去肝火喝什么茶
什么食物含钾最高 六月二十七是什么日子 半夜会醒是什么原因 消化不好吃什么药最好 charging是什么意思
飞行员妻子有什么待遇hcv9jop0ns0r.cn 靶点是什么意思hcv8jop8ns3r.cn 失眠可以吃什么药hcv9jop3ns9r.cn 口苦口干是什么原因造成的hcv9jop1ns8r.cn 夏天脚底冰凉是什么原因hcv8jop7ns5r.cn
海里有什么鱼hcv9jop4ns4r.cn 08是什么生肖hcv9jop0ns0r.cn 镜检红细胞是什么意思hcv8jop9ns6r.cn 小孩吃牛肉有什么好处hcv7jop6ns4r.cn 来月经喝酒有什么影响hcv8jop8ns2r.cn
碱水对人有什么危害hcv8jop9ns6r.cn 天蝎男喜欢什么样的女生hcv8jop1ns1r.cn 说辞是什么意思sanhestory.com 冚家铲是什么意思hcv8jop1ns2r.cn tablet是什么意思hcv8jop4ns8r.cn
脚背浮肿是什么原因引起的hcv9jop4ns1r.cn 富字五行属什么hcv7jop6ns3r.cn 咳嗽有血是什么原因hcv8jop1ns2r.cn 排卵期同房后要注意什么hcv8jop2ns8r.cn 木字多一撇是什么字hcv8jop7ns7r.cn
百度