11点是什么时辰| 什么羽毛球拍最好| 醒酒喝什么饮料| skr什么意思| 尿毒症是什么| 健忘症是什么意思| 为什么有白带| k是什么元素| 炖肉放什么容易烂| 5月22是什么星座| 便秘吃什么能通便| 耳鸣脑鸣是什么原因引起的| 住院号是什么| 宫寒吃什么药调理最好| 来例假腰疼是什么原因| 胆红素三个指标都高是什么原因| 孩子肚脐眼下面疼是什么原因| 一见钟情是什么感觉| 黄皮肤适合什么颜色的衣服| 九牧王男装是什么档次| 右手小拇指发麻是什么原因| 同型半胱氨酸是什么| 吃什么可以降火| poem是什么意思| 路由器管理员密码是什么| 水加日念什么| 蜂蜜的主要成分是什么| ercp是什么检查| 莲字五行属什么| 脆皖鱼是什么鱼| 放疗跟化疗有什么区别| 医助是什么工作| 癫疯病早期有什么症状| 女人血稠吃什么食物好| 桉是什么意思| 食管炎是什么原因引起的| 痛风什么感觉| 翻新机是什么意思| 忘忧草是什么意思| 黄芪不适合什么人吃| 老烂腿用什么药最好| 血脂稠是什么原因造成的| ph值偏高是什么意思| 药娘吃的什么药| 电磁波是什么| 透析是什么病| 脚肿吃什么药| 染色体异常是什么意思| 什么时间立秋| 经常生气会得什么病| 狮子座的幸运色是什么| 森林里有什么| 44是什么意思| 糍粑是什么做的| 广州有什么美食| 肺部纤维化是什么意思| 拘挛是什么意思| 普通门诊和专家门诊有什么区别| 一九七一年属什么生肖| 炫的意思是什么| 突然肚子疼是什么原因| 一月十五号是什么星座| 牡丹花什么颜色| 窦卵泡是什么意思| 克罗心是什么牌子| 英语什么时候学最好| nlp是什么意思| 股票pe是什么意思| 喝绿豆汤有什么好处| 梦见很多蜘蛛是什么意思| 小孩睡觉流口水是什么原因| 大便长期不成形是什么原因| 头皮癣用什么药膏最好| 有齿痕吃什么药| 南瓜和什么不能一起吃| 18是什么生肖| 小孩积食吃什么| 侃侃而谈是什么意思| 有趣的什么填空| 大便干硬是什么原因| 吃华法林不能吃什么| 干什么能挣钱快| 猫毛过敏吃什么药| 小孩腹泻吃什么药好得快| 胆管炎是什么原因引起的| 周长是什么意思| 白兰地兑什么饮料好喝| 毛骨鱼是什么鱼| 子宫肌瘤吃什么| s代表什么| 硬下疳是什么意思| 地贫有什么症状| 虾和什么不能一起吃| 腋下副乳有什么危害吗| 推头是什么意思| 打胶原蛋白针有什么副作用吗| 金钱能买来什么但买不来什么| 发际线高适合什么发型| 日本什么值得买| 飞蛾扑火是什么意思| 腰的左侧疼是什么原因| 天庭饱满是什么意思| 甲基蓝治疗什么鱼病| 含蓄什么意思| 人为什么会发热| 四海是什么意思| 淋巴在什么部位| 什么鬼什么神| 什么样的伤口算开放性| 菠萝和什么不能一起吃| 先天是什么意思| 甜字五行属什么| 护照补办需要什么材料| 甲氧氯普胺片又叫什么| 种草是什么意思| 皮肤软组织感染用什么消炎药| 10月20是什么星座| 蛇屎是什么样子| 鸡宝是什么| 健康证明需要检查什么| 生物公司是做什么的| 屁股右边痛是什么原因| 杨枝甘露是什么意思| 身体缺钾有什么症状| 邵字五行属什么| 为什么喝酒| 什么的云彩| 早筛是检查什么项目| 宝宝出牙晚是什么原因| 足癣用什么药| 碧玺是什么材质| 什么是激素药| 亚甲减是什么意思| 四肢麻木是什么病| 心律不齐吃什么药最快| 喉咙痒是什么原因| 黄瓜为什么不叫绿瓜| 喝紫苏水有什么功效| edd什么意思| 中午1点是什么时辰| 失声是什么意思| dha每天什么时候吃最好| 藿香正气水什么时候喝| 眼皮肿痛什么原因| 烟火气息是什么意思| 淋巴细胞百分比偏低是什么意思| 精神病吃什么药最好| 丙型肝炎病毒抗体阴性什么意思| 为什么锻炼后体重反而增加了| nec医学上是什么意思| 牛肉丸子配什么菜好吃| 骨质增生吃什么药效果好| 什么水果止咳| 地黄泡水喝有什么好处| 梦见蜘蛛网是什么意思| 喝咖啡对身体有什么好处| 预防感冒吃什么药| 乳腺低回声结节是什么意思| 羽毛球拍什么材质的好| 彩超低回声是什么意思| 什么是气短| 水险痣是什么意思| 沙弗莱是什么宝石| 人潮涌动是什么意思| 饺子是什么意思| 幽门螺杆菌是什么意思| 一个月一个屯念什么| 宝宝睡眠不好是什么原因| 参芪颗粒适合什么人吃| 膀胱过度活动症吃什么药| 狗被蜱虫咬了有什么症状| forever21是什么牌子| 打猎是什么意思| 阿魏是什么中药| 怀孕了想打掉吃什么药| 护士证什么时候下来| 中老年人补钙吃什么牌子的钙片好| 扁桃体化脓是什么原因引起的| 老虎菜为什么叫老虎菜| supra是什么牌子| 为什么会胀气| 一个斤一个页念什么| 一物降一物指什么生肖| 高压高低压低是什么原因| 男人吃生蚝补什么| 分泌物发黄是什么原因| 头皮脂溢性皮炎用什么药| 破伤风是什么症状| 肚脐眼下方是什么器官| 热得像什么| 莲子有什么功效| 惊厥是什么病| 蛋白质被消化成什么| 肾功能不全是什么意思| 红蜘蛛用什么药| 妇科假丝酵母菌是什么病| 性向是什么意思| 支气管炎吃什么药| 同学群取什么名字好| 六月八号什么星座| 洗面奶什么好| 元宵节送什么| 呼吸不顺畅是什么原因| 擦什么能阻止毛发生长| 野生型是什么意思| 黑眼袋是什么原因引起的| 什么是过敏性咳嗽| 梦见好多鱼是什么意思| 网球肘吃什么药| 螚什么意思| 2010年属什么生肖| 员级职称是什么意思| 心肌酶高有什么危害| 全心增大是什么意思| 接亲是什么意思| 5月4号是什么星座| 渴望是什么意思| 过敏性咽炎吃什么药| 吃什么能提高血压| 2025什么年| 阴虚吃什么药| 胃造影和胃镜有什么区别| 美宝莲属于什么档次| 给男朋友买什么礼物比较好| 马华读什么| 卵巢保养吃什么好| 中指和无名指一样长代表什么| 关节痛挂号挂什么科| 九一年属什么生肖| 走后门什么意思| 心不在焉是什么意思| 燕窝什么人不适合吃| 联姻是什么意思| 什么去甲醛最快有效| 头顶是什么穴位| 为什么打喷嚏会漏尿| 纵什么意思| 头晕出虚汗是什么原因引起的| 尿有味是什么原因| 苏州机场叫什么| 月经快来了有什么征兆| 考妣是什么意思| 托班是什么意思| 腿不自觉的抖是什么原因| 自相矛盾什么意思| 身上起小红点是什么原因| 喝水多尿少是什么原因| 11月1日什么星座| 什么是自限性疾病| 零七年属什么生肖| 软著是什么| blk是什么意思| 鱼子酱是什么东西| 马脸是什么脸型| 紫外线过敏用什么药| 古代四大发明是什么| 游离甲状腺素偏低是什么意思| 欢五行属什么| 阴桃花是什么意思| 喝柠檬水对身体有什么好处| 脚底长痣有什么说法| 福鼎白茶属于什么茶| 什么药可以通血管| 什么克金| 百度Jump to content

信访干部要有砖的品格

From Wikipedia, the free encyclopedia
(Redirected from PLT Scheme)
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-14)
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]
百度 在今晨5点多,NBATV也在推特上转发了ESPN的分析视频并写道:伦纳德本赛季不会回归了?这都让球迷们浮想联翩,不过就在这一关键时刻,马刺队的后卫丹尼-格林在推特上转发沃神的推特并写道:不能再假了哈哈哈,也就是辟谣马刺队并没有全队恳求伦纳德复出。

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

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
脚水泡痒用什么药 ctc是什么 本科专科有什么区别 然五行属什么 梦见买黄金是什么兆头
什么样的荷叶 减肥晚上适合吃什么水果 愚公移山是什么意思 咸湿佬是什么意思 尿液发臭是什么原因
为什么会长痤疮 牙痛安又叫什么 吃桃有什么好处 高铁动车有什么区别 4月22日是什么星座
建设性意见是什么意思 家蛇出现寓意什么 火舌是什么意思 rh因子阳性是什么意思 浑浑噩噩是什么意思
处是什么结构hcv7jop6ns1r.cn 肩周炎吃什么药naasee.com 紫玫瑰代表什么意思hcv8jop9ns3r.cn 托帕石是什么宝石hcv8jop3ns0r.cn 锁骨发适合什么脸型hcv7jop7ns0r.cn
近字五行属什么hcv7jop9ns4r.cn 姜汁可乐有什么功效与作用hcv8jop9ns1r.cn bu什么颜色hcv7jop7ns4r.cn 吃激素有什么副作用hcv8jop3ns5r.cn 吃什么排出全身毒素hcv8jop9ns2r.cn
什么情况需要做肠镜hcv9jop6ns2r.cn 白化病有什么危害吗hcv8jop9ns9r.cn 路人皆知的上一句歇后语是什么hcv9jop4ns8r.cn 问号是什么意思hcv8jop9ns7r.cn 开门是什么意思hcv9jop2ns4r.cn
冒昧打扰是什么意思hcv7jop9ns5r.cn 肝火旺吃什么降火最快hcv9jop2ns1r.cn 蛤蟆吃什么hcv8jop3ns7r.cn 贫血应该吃什么mmeoe.com 后脑勺疼什么原因hcv8jop4ns1r.cn
百度