s表达式 + 1 2 3
普通表达式 1+2+3json表达式{ +:[1, 2, 3]}优点,一个运算符,无限个参数
s表达式 * (+ 1 2) 3
普通表达式 1+(2*3)json表达式{ *:[{+:[1,2]} , 3]}优点,阅读代码的时候,无需记住运算优先级。普通表达式则要记住运算优先级 s表达式判断 if (< x 0) (-x) (x)普通表达式 if(x<0){return -x} else{return x}json表达式{ if:[{ <: [x,0]}, -x, x]} s表达式and判断 if (and (> x 0) (< x 10)) (-x) (x)json表达式{ if: [ {and: [{>:[x, 0]} , {<: [x, 10]} ]}, -x, x]}s表达式的递归
define (factorial n) (if (= n 1)) (1) (* n (factorial (- n 1)))json表达式{ define: [{factorial:n}, {if:[{=:[n, 1]}, 1, {*:[n, {factorial:[{-:[n, 1]}] }]} ]}]}s表达式的迭代define (factorial n) (fact-iter 1 1 n){ define:[{factorial:n}, {fact-iter:[1, 1, n]}]}
define (fact-iter product counter max-count)
(if (> counter max-count)) (product) (fact-iter (* counter product)) (+ counter 1) (max-count)))