scheme-r5rs包(不知道为何没有 mit-scheme包), (实际安装的包名为scheme48), 使用命令scheme48开启命令行。137 + 349 ⇒ (+ 137 349) , 可避免多参数歧义,可嵌套。define 命名变量define用于关联变量(define (square x) (* x x)), 过程定义的一般形式是:(define (<name> <formal parameters>) <body>)
cond:(cond (<p1> <e1>) (<p2> <e2>) ... (<pn> <en>))
执行时直到 px 真,则返回 ex.
if:(if <predicate> <consequent> <alternative>)
; 有假则返回假,后续不判断,全真则返回 en <and <e1> ... <en>) ; 有真则返回第一个真,后续补判断,全假则返回假 <or <e1> ... <en>) ; e 真返回假,e 假返回真 <not <e>)
conf定义if,而重新提供一个if. 因为由conf定义的if在参与递归时会先求值参数而导致无限递归,所以需要一个能先执行判断条件(而不是先求所有参数值)的特殊形式。lambada 构造过程;let表达式构建局部变量:(let ((<var1> <exp1>) (<var2> <exp2>) ... (<varn> <expn>)) <body>) ; 即在<body>中的<var1>具有值<exp1>,且<var2>具有值<exp2>...<varn>具有值<expn>
(define x (cons 1 2)) (car x) 1 (cdr x) 2
cons 满足闭包性质;可建立起层次性的结构list 基本操作list-ref, null?; mapmap