第一次看 Racket 代码,很多小伙伴的第一反应可能都是:“怎么这么多括号呢?!” 其实,我们只要习惯了它的 “前缀写法”(也就是把动作放在最前面),这些括号不仅不可怕,反而逻辑很清晰。平时如果你只是想练练函数、递归,或者临时测个小语法,专门去本地搭一套开发环境,多少有点折腾。
这时候,直接用咱们绿叶网的 Racket 在线编译器就省事多了。网页上直接写,写完马上跑,非常的简单方便。
页面上方就是咱们的 Racket 在线编译器了,基本流程就是简单的 “写、跑、看、改”:
Ctrl + Enter 快捷键。我们来跑个小例子:比如要筛选一下最近的高温天气。这段代码用到了列表、filter(过滤)、lambda(匿名函数),以及 Racket 最经典的 “前缀写法”:
#lang racket
(define temperatures '(28 31 25 34 29))
(define hot-days
(filter (lambda (t) (>= t 30)) temperatures))
(displayln hot-days)
(displayln (apply max temperatures))运行结果如下。
(31 34)
34像上面这种小代码,最适合使用在线编译器来验证。写完直接运行,不需要专门去建个本地项目。
Racket 在线编译器主打一个 “短平快”。它不是用来替代正儿八经的本地开发环境的,而是为了让你抛开繁杂的配置,直接把精力集中在熟悉语法和验证思路上。
它主要适合以下这些场景:

如果你的项目越写越大,而且需要引入第三方包、画图形界面或者写 Web 服务,此时使用在线编译器就不合适了,还是老老实实下载官方的 DrRacket 工具或者搭建本地环境吧。
简单来说,Racket 是大名鼎鼎的 Lisp 家族的一员(可以说是 Scheme 的进阶版)。它以前叫 PLT Scheme,2010 年才改名为 Racket。

Racket 有以下 2 个非常鲜明的特点:
另外,官方还非常贴心地自带了一个叫 DrRacket 的开发环境。界面直观,对新手极其友好,比对着黑乎乎的命令行敲代码舒服多了。
Racket 不是那种 “什么项目都要凑热闹” 的大众商业语言。它有自己独特的 “统治区”,特别受教育界和硬核开发者的偏爱:

总而言之,Racket 是一门能帮我们 “开拓编程思维” 的语言。也许我们不会用它来写一个常规的商业 App,但用它来学理论、造轮子或者研究底层原理,绝对是一把好手。
简单来说,Racket 算是 Scheme 的 “进化版后代”。它以前的名字就叫 PLT Scheme,直到 2010 年才改名 “单飞”。
它们俩都属于 Lisp 家族,有着共同的基因——比如前缀写法、满屏的括号以及函数式编程的风格。但是,Racket 后来发展出了自己独有的一套 “神兵利器”(比如更完善的模块系统、宏系统和丰富的库),所以 Racket 的代码并不能直接拿到其他的 Scheme 环境里去无缝运行。
如果小伙伴们只是想体会一下 Lisp/Scheme 家族的编程思维,学哪个都相通。但如果真要上手敲代码,就得认准自己用的是 Racket 的场子,别把两家的语法和库混着写。

初看 Racket,很多小伙伴的第一反应容易被满屏的括号劝退。其实它真不是为了折磨新手,而是因为 Racket 采用了一种非常直接的写法:把动作(运算符号或函数)放在最前面,参数跟在后面,最后用括号 “打包” 起来。
比如算个简单的数学题 10 + (2 * 3),在 Racket 里长这样:
(+ 10 (* 2 3))它的计算逻辑和我们平时的习惯一样,像剥洋葱似的由内向外算:先解决内层的 (* 2 3) 得到 6,再去算外层的 (+ 10 6),最终得出 16。
刚开始看确实容易眼花。但稍微习惯后我们会发现,这些括号就像是代码的 “骨架”,把逻辑层级安排得明明白白。配合上现代编辑器的括号颜色高亮和自动缩进,阅读和编写其实都很直观。
代码写得多了以后,鼠标点来点去多少有点慢。Racket 在线编译器支持下面这些常用快捷键,小伙伴们先把几个高频的记住就够用了。
Ctrl + Enter:运行代码。Ctrl + Z:撤销、Ctrl + Y:重做。Ctrl + C:复制、Ctrl + V:粘贴。Ctrl + A:全选。Ctrl + X:剪切。Ctrl + /:注释或取消注释。Ctrl + Home:跳转到首行的行首。Ctrl + End:跳转到末行的结尾。其中最值得记住的是 Ctrl + Enter 这个快捷键。我们写完代码顺手一按就能运行,习惯以后方便很多。