4、Scheme编程:从变量定义到递归与映射的全面解析

Scheme编程:从变量定义到递归与映射的全面解析

1. 未定义变量与过程定义顺序

在Scheme中,系统在lambda表达式里遇到未定义变量时,不会立即报错,直到该过程被实际调用。例如:

(define proc1
  (lambda (x y)
    (proc2 y x)))

这里 proc2 未定义,但定义 proc1 时系统不会报错。若在定义 proc2 之前调用 proc1 ,则会出错。我们可以给 proc2 一个顶层定义并测试 proc1

(define proc2 cons)
(proc1 'a 'b) 
; 输出 (b . a)

这意味着我们可以按任意顺序定义过程,这在组织过程定义文件以提高程序可读性时非常有用,尤其在顶层定义的两个过程相互依赖的情况下。

2. 练习题
  • 练习2.6.1 :给定 double-any 的定义,若输入 (double-any double-any double-any) 会发生什么?
  • 练习2.6.2 :定义 compose </
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值