4.8序列

Racket程序员更愿意写没有副作用的程序,因为纯函数的代码既容易测试又容易组合成大型程序。但是为了和外部环境无相作用,比如打印输入,操作图形界面,或者操作一个硬盘上的文件,我们需要序列。

4.8.1提前效果:begin

  (begin expr ...+)

expr安顺序执行,只返回最后一个表达式的值,其它被忽略。
很多形式,像lambda或者cond支持没有begin序列。这些形式被当做暗含begin。
begin形式在顶层,模块层,内部定义时有特殊作用。它可以构建在周围上下文之外的环境。这种行为主要用在宏里。

4.8.2滞后效果:begin0

  (begin0 expr ...+)

不同于begin,返回第一个表达式的值。在副作用发生在计算以后的情况下,特别是计算产生未知个数的结果的时候,它很有用。

4.8.3if效果: when unless

when用序列组合了if风格的条件,它只有then没有else。

  (when test-expr then-body ...+)

当测试表达式的结果是true,则所有的then-bodys都将被执行,且结果是最后一个表达式。

  (unless test-expr then-body ...+)

不同于when,除非测试表达式的结果为#f,否则then-bodys不被执行。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容