program. 算术性质检查的表达式与环境样本[lp-cases]
(define (expressions depth)
(let ((atoms '(-1 0 1 x y)))
(if (= depth 0) atoms
(let ((smaller (expressions (- depth 1))))
(append atoms
(append-map
(lambda (operation)
(append-map
(lambda (left)
(map (lambda (right) (list operation left right)) smaller))
smaller))
'(+ *)))))))
(define environments
'(((x -2) (y 3)) ((x 0) (y 0)) ((x 4) (y -1))))
(define cases
(append-map
(lambda (expression)
(map (lambda (environment) (list expression environment)) environments))
(expressions 2)))