Petite Chez Scheme Version 9.5 Copyright 1984-2017 Cisco Systems, Inc. > (define a '(2 3 4)) > (define b (cons 1 a)) > b (1 2 3 4) > a (2 3 4) > (define impr (cons 1 (cons 2 3))) > impr (1 2 . 3) > '(1 . (2 . 3)) (1 2 . 3) > (define fact (lambda (n) (cond [(zero? n] 1] [else (* n (fact (- n 1)))]))) Exception in read: parenthesized list terminated by bracket > 1 > Exception: misplaced aux keyword (else (* n (fact (...)))) > (define fact (lambda (n) (cond [(zero? n) 1] [else (* n (fact (- n 1)))]))) > (fact 4) 24 > (fact -2) C-c C-c break> q > (define fact2 (lambda (n) (if (or (negative? n) (not (integer? n))) "error" (fact-acc n 1)))) > (define fact-acc (lambda (n acc) (if (zero? n) acc (fact-acc (- n 1) (* n acc))))) > (fact2 4) 24 > (trace fact fact2 fact-acc) (fact fact2 fact-acc) > (fact 4) |(fact 4) | (fact 3) | |(fact 2) | | (fact 1) | | |(fact 0) | | |1 | | 1 | |2 | 6 |24 24 > (fact2 4) |(fact2 4) |(fact-acc 4 1) |(fact-acc 3 4) |(fact-acc 2 12) |(fact-acc 1 24) |(fact-acc 0 24) |24 24 >