表达式即列表

可以通过 list 组成列表,通过 eval 对列表进行求值
可以通过对运算符前加一撇’,阻止进行运算,以保留原始符号

引用与准引用

1. Quote ('):
• quote用于直接返回它的参数,不对其进行求值。这意味着,无论quote中包含什么样的代码,结果都是代码的字面表示。
• 例如,'(a b) 和 '(a ,(+ b 1)) 都会直接返回表达式本身,不进行任何计算。
2. Quasiquote (  `):
• quasiquote允许部分表达式被求值,这通过使用unquote(,) 或 unquote-splicing(,@) 来实现。这让你可以构建部分动态生成的数据结构。
• 在quasiquote中,你可以包含一些普通的静态数据,同时通过unquote指定某些部分需要进行求值。
• 例如,'(a ,(+ b 1)) 仍然返回整个表达式,而  `(a ,(+ b 1)) 会对,(+ b 1)部分求值,若b为4,则结果为(a 5)。

实例:while 的控制

notion image
这里是常规的代码
notion image
其中,begin 用于序列化表示,也就是返回一个表达式,而非求值后的结果
这里通过传入几个参数、运行,可以得到一个表达式,然后进行 eval 即可求值
这里定义 sum while 的一个好处就是可以让 Scheme 代替我们生成一些代码,同时在修改相关功能时更加方便,直接修改最初传入的“规则”即可
 
Loading...
昊卿
昊卿
一个普通的干饭人🍚
最新发布
大一上学期总结
2025-3-9
4.1 多层感知机
2025-3-7
3.4 softmax 回归
2025-3-5
3.3 线性回归的简洁实现
2025-3-5
3.2 线性回归的从零开始实现
2025-3-5
3.1 线性回归
2025-3-5