Racket 编程入门

第 1 部分 · 起点:编程与计算的本质

装好 Racket,认出 DrRacket 的两扇窗

装好 Racket、打开 DrRacket,你就拿到了一个“写一行、立刻看到结果”的练功房——Racket 是边跑边学的语言,环境装好,学习就顺了一半。

你决定学 Racket。第一件事不是背语法,而是把环境装好。

因为 Racket 最有效的学法,是“写一行、立刻看结果”:你敲一个表达式,它马上把求值结果摆在眼前。这种学法需要一个能随时回应你的环境——DrRacket 就是干这个的。环境装不好,后面每一步都会卡在“怎么跑”上面,而不是真正在学语言。

这篇带你装好 Racket、认出 DrRacket 的两扇窗、跑出第一行代码。全程不到十分钟。

一步装好:一个安装包,三平台都通

去 download.racket-lang.org,选你的操作系统,下一个安装包。当前版本是 9.2(2026 年 5 月),往后版本操作一样。

一个细节省得你后面疑惑:这一个安装包里什么都齐了——图形界面 DrRacket、命令行的 racket 和 raco、还有 Racket 语言本身。不需要再单独装编辑器、配插件,装完就能用。

  • Windows:运行安装程序,一路下一步。
  • macOS:拖动 .app 到「应用程序」。
  • Linux:用官方的安装脚本最省心;发行版自带的包管理器(如 apt)里的 racket 常常过时,不推荐。

装完,在开始菜单或应用程序里找到 DrRacket,打开它。

DrRacket 的两扇窗

DrRacket 一打开,你会看到上下两个区域。这两扇窗是 Racket 学法的核心,先认清楚。

上面那扇叫定义区(Definitions)。它是你写代码、存成文件的地方——你写的“成品”住在这里。

下面那扇叫交互区(Interactions)。它是一个 REPL:你敲一行,回车,它立刻求值出结果。想随手试个想法、查个函数返回什么,就在这儿敲。

大多数语言只给你一条路:写文件 → 编译 → 运行。DrRacket 多给了交互区这条随时试的路——这是 Racket 对新手最友好的地方之一。你不用为了“看看这个表达式等于几”去写一个完整的程序。

第一行代码:在交互区算一笔账

光说不练没用。点一下下面的交互区,把光标放进去,敲这一行,回车:

(+ 1 2)
;; 3

出来 3。括号里第一个是 +,后面跟要加的数——这就是 Racket 的语法形状:括号表示一次操作,操作符永远在最前面。习惯了这个形状,Racket 的语法就懂了一大半。

再试几个,建立直觉:

(* 6 7)
;; 42

(string-append "hello" " " "world")
;; "hello world"

(- 10 3 2)
;; 5 减法也能吃多个参数

每一行敲完回车,立刻看到结果。这就是“边跑边学”。

定义区:把代码存下来

交互区适合随手试,但代码终归要存成文件。把光标切到上面的定义区,写成这样:

#lang racket

(define (square x)
 (* x x))

第一行 #lang racket 必须有——它告诉 Racket“这个文件用 Racket 语言”。下面定义了一个求平方的函数 square。

写完,点右上角的 Run 按钮(或按 Ctrl+R,或菜单 Racket → Run)。

Run 做两件事:把定义区的内容全部求值一遍,然后重置交互区。所以 Run 完,交互区就能直接用你刚定义的 square 了:

(square 5)
;; 25

(square 12)
;; 144

以后只要改了定义区,就重新 Run 一次——这是 DrRacket 的工作节奏。

命令行 racket(可选,新手可跳过)

如果你习惯终端,Racket 也带命令行:

racket ; 进入 REPL,和交互区一样
racket hello.rkt ; 直接跑一个文件
raco pkg install 包名 ; 装第三方包(raco 是 Racket 的工具命令)

新手用 DrRacket 就够了,命令行等你想写脚本、跑服务时再用不迟。

看懂出错信息

写代码一定会报错,关键是别被红字吓住。比如你打错了名字:

(squre 5)
;; squre: unbound identifier

DrRacket 会高亮出错的位置,告诉你 squre 是个“未绑定的标识符”——意思是它不认识这个名字(你定义的是 square,少了个 a)。

Racket 的错误信息在所有语言里算很讲人话的那一档:位置准、提示具体。养成读错误信息的习惯,比改完就跑更重要。

装好、会跑、看得懂报错——你已经在 Racket 里站稳了。下一篇先讲那满屏括号到底在搭什么结构,再往下才轮到数据和语法。

📷 待补运行截图:DrRacket 主界面:上半定义区写代码、下半交互区(REPL)跑结果,两扇窗同框(drracket-two-panes-definition-interaction.png)