Scheme 语法备忘录
- 定义变量或函数:语法
(define <name> <value>); - 定义宏:语法
(define-macro <name parameters> <body>)。不同于函数,宏不会计算值,而是实现代码的替换,可以实现很多奇妙的功能,例如实现 for 循环:(define-macro (list-of map-expr for var in lst if filter-expr) `(map (lambda (,var) ,map-expr) (filter (lambda (,var) ,filter-expr) ,lst))) - 运算符:加减乘正常,除法 quotient,取模 remainder;语法
(+ a b); - 数学运算:平方根 sprt,乘方 expt,自然对数 log,三角函数 sin, cos,tan, asin, acos等;
- 布尔值:#t #f;
- 条件语句:if 句语法
if <condition> <suite-1> <suite-2>,为真执行 suite-1,为假执行 suite-2;cond 句语法为
不同于 switch,cond 会判断每一个条件;如果 conditions 全为简单变量,可以用 case 代替 cond;cond <condition-1> <suite-1> <condition-2> <suite-2> <condition-3> <suite-3> ... - 数据结构:用 cons 建立 Pair 表示树形结构,必须以 nil 结束,语法为
(cons 1 (cons 2 (cons 3 nil)));用 car 取首元素,用 cdr 取除了首元素外的其他元素; - quote:用 ' 标记的表达式不计算值,只返回字面内容,
'(1 2 3)返回一个 list; - quasi-quotation:类似 quote,但用
`表示,内部可以通过在变量前加,选择将其作为值处理,整体上类似 Python 的 .format() 方法。 - 内建函数:参考该网页
- lambda 表达式:语法
(lambda <parameter list> <body>)。

浙公网安备 33010602011771号