Lisp语言的分支-Racket
2014-03-11 15:22:37 阿炯

Racket源自著名的专家型语言PLT Scheme,同时又是Lisp语言的一个分支。它适用于从脚本Script到应用程序开发的任务执行工具,包括图形用户界面,Web服务器等。支持编译器的虚拟机,创建独立的可执行程序的工具,Racket Web服务器,具有丰富而全面的功能库,适用于初学者和专家编程,采用LGPL协议授权。

Racket原名 PLT Scheme是一门通用、多范型,属于 Lisp 家族的函数式程序设计语言,它的设计目之一是为了提供一种用于创造设计与实现其它编程语言的平台,Racket 被用于脚本程序设计、通用程序设计、计算机科学教育和学术研究等不同领域。它有一个实现平台,包含了运行环境、函数库、即时编译器 (JIT compiler) 等等,还有提供一个以 Racket 本身写成的开发环境 DrRacket原名 DrScheme。





Racket可通过创建大量的语法系统来支持和创建新的编程语言,包括Typed Scheme,ACL2,FrTime,Lazy Scheme和ProfessorJ等。作为编程语言的通用测试平台,Racket软件包主要工具包括:

* racket--系统核心部分,主要包括编译器、解释器和运行库程序;

* DrRacket--原为DrScheme,是一个基于Racket的开源、跨平台系统的IDE集成编程环境,更加适用于初学者的GUI图形化用户编程界面;

* raco--基于字符界面的命令行执行工具,用于执行Racket命令集,如安装系统组件功能包,创建函数库等。

Racket的特点是具有全面而丰富的库,可用于实现xml, web-server, web-framework, multiple-threads, pattern match, latex, slides, posix, GUI等,其实用性不比Common Lisp差。另外其与众不同的特点在于macro和continuation,并引入了syntax object和compilable macro的概念。

具体说来,LISP有以下几个主要特点:

1.计算用的是符号表达式而不是数;

2.具有表处理能力,即用链表形式表示所有的数据;

3.控制结构基于函数的复合,以形成更复杂的函数;

4.用递归作为描述问题和过程的方法;

5.用LISP语言书写的EVAL函数既可作为LISP语言的解释程序,又可以作为语言本身的形式定义;

6.程序本身也同所有其他数据一样用表结构形式表示。

已经证明:LISP的这些特点是解决人工智能核心问题的关键。它和后来由英国伦敦大学的青年学生柯瓦提出、由法国马赛大学的考尔麦劳厄(Alain Colmerauer)所领导的研究小组于1973年首先实现的逻辑式语言PROLOG并称为人工智能的两大语言,对人工智能的发展起了十分深远的影响。

最新版本:6.6
包含一个新的包系统,包括数百个可用包。可从http://pkgs.racket-lang.org/了解这些包的详细内容,其他改进内容请看主页。

最新版本:8.0
Racket 8.0 已于2021年2月未正式发布,这标志着这是首个以 Racket CS 为默认实现的版本。创建、完善和采用 Racket CS 是整个 Racket 社区 4 年的努力。现在,Racket CS 的速度更快、更易于维护和开发,并与现有的 Racket 程序兼容。Racket CS 将继续改进,但是现在,它已经准备好成为所有 Racketeers 的主要变种。点此查看更多关于 Racket CS 现状的细节。其他值得关注的变化:
Racket CS 具有更好的并行垃圾回收功能,生成的代码大小减少 10%-30%,并进行了多项针对性的优化
重写 test-engine 包,允许教学语言的#lang版本生成链接的测试失败消息
该版本附带了一个新的标记 DSL,用于组成文本出现在 REPL 中 (simple-tree-text-markup)
Redex 新增了define-overriding-judgment表单,并改进了错误源位置报告
Windows 滚动速度由系统偏好设置决定
db 软件包将 utf8mb4 字符集用于 MySQL 连接


官方主页:http://racket-lang.org/