Marvin's Blog【程式人生】

Ability will never catch up with the demand for it

17 Feb 2021

Racket文档阅读笔记:DrRacket环境

DrRacket: The Racket Programming Environmen

1 Interface Essentials

1.1 Buttons

Step按键只在Beginning Student到Intermediate Student with Lambda等语言中可用。其他情况下可以用Debug按键来按步跟踪。

Check Syntax按键可以增加批注:

  • 语法高亮
  • 文法结构
  • 尾递归标识
  • Require相关的批注

Check Syntax会在编辑代码的时候自动运行。并在底部状态栏的右边有圆点(可右击禁止)表示状态:

blue (expanding), purple (computing check syntax information), orchid (updating the editor with the check syntax information), and green (finished).

1.2 Choosing a Language

推荐在源码中标出所使用的语言类型

1.3 Editing with Parentheses

DrRacket会自动将其他形式的括号改写成圆括号,但是有一些例外的场景。按住Ctrl键再输入可以回避DrRacket的这种操作。

1.4 Searching

可以打开Preferences->Editing->General Editing,勾上Search Using anchors来让搜索的时候一下子跳到第一个匹配点。

1.5 Tabbed Editing

好吧,DrRacket也支持tab。

1.6 The Interactions Window

当表达式不完全的时候DrRacket不会对其进行求值。

ESC-p(或者Ctrl+Up)可以调出之前执行的命令。ESC-n向前回溯。

Edit->Keybinding->Show Active Keybindings可以查看键绑定。

1.6.1 Errors

交互窗口会用来显示错误信息。错误信息有时候带有超链接,可以跳转到出问题的地方。有时候带有可点击的图标,可以点击弹出一个对话框,显示错误的表达式。

1.6.2 Input and Output

交互窗口可以用来给程序做输入。比如(read)可以再交合窗口显示一个输入框,用来输入文字。

毋庸置疑,交互窗口也可以做输出:

#lang racket
(define v (read))
(display v) (newline)

上面的代码会读入一串s表达式,并原样输入,然后再换行。

可以用(read char)来读入单个字符。

#lang racket模式下,顶层表达式的结果采用(current-print)来打印,效果和在交互窗口直接输入是一样的。

1.7 Graphical Syntax

1.7.1 Images

DrRacket中可以直接插入图片,支持注入GIF, PNG以及BMP格式的图片。

可以用htdp/image来操作图片,或者可以把图片当作image-snip%

1.7.2 XML Boxes and Racket Boxes

DrRacekt对XML也有特殊的支持。可以插入XML Box。XML Box求值的时候会被转为x-expression(xexpr)。

Ctrl+右击XMLBox的上部,可以选择XML Box对空白的处理方式:保留还是去除。

XML Box还可以用来包含Racket boxes,即含有Racket表达式的的Racket boxes,求值的结果作为xexpr。Racket box分为标准的以及合并式的。

1.8 Graphical Debugging Interface

允许用户观测程序的执行。

1.8.1 Debugger Buttons

  • 暂停的程序可以使用Go按键恢复执行
  • 暂停的程序可以使用Step单步执行
  • Over可以在表达式外部使用,并且表达式非尾递归形式
  • Out可以在表达式内部使用

暂停一个运行的程序,并不能精确获取其停止点。

1.8.2 Definitions Window Actions

程序暂停时,可以CTRL+右击在某个括号处设置一点断点。普通断点以红色小圆点出现,一次性断点以黄色小圆点出现。

第一次Debug一个非module程序的时候,可能断点未完全是生效。再次debug的时候会记住这些断点。

表达式开始位置,CTRL+右击绿色三角键可以执行Skip expression…操作;表达式结束位置,CTRL+右击绿色三角键可以打印返回值或者修改返回值。

悬停在一个绑定的变量之上可以显示变量的名字以及变量的值。此时CTRL+右击可以打印变量的值或者修改变量值。

1.8.3 Stack View Pane

程序暂停的时候会在右侧显示Stack frames,点击每个frame可以显示具体的变量绑定。

1.8.4 Debugging Multiple Files

对于跨多个文件的程序,确保每个文件都在DrRacket中打开,然后再主程序文件点击Debug。会询问是否也包含主程序文件以外的文件进来。

1.9 The Module Browser

可以View->Open Module Browser来打开模块浏览器。

1.10 Color Schemes

DrRacket可以再首选项中修改配色方案。也可以自定以配色方案,具体不表。

1.11 Creating Executables

Racket可以将程序打包成二进制文件:

  • launcher executable,需要安装有DrRacket才能运行。
  • stand-alone executable,依赖比上一个少,但是仍然需要访问DrRacket的库,好像也没有那么独立
  • distribution archive,真正独立的打包方式

很多语言只支持某种打包方式。

记得在打包之前将调试关闭,否则会降低程序运行速度。

To disable debugging, open the language dialog, click the Show Details button, and select No debugging or profiling, if it is available.

可以为打包的程序指派一个图标。

1.12 Following Log Messages

通过View->Show Log可以查看日志记录。

2 Languages

3 Interface Reference

4 Extending DrRacket

(本篇完)