Petite Chez Scheme Version 9.5
Copyright 1984-2017 Cisco Systems, Inc.

> (define a '(3 6))
> (let ([end1 (car a)]
      [end2 (cadr a)])
  (and (< end1 0) (> end2 0)))
#f
> (cons 1 2)
(1 . 2)
> (cons 1 '())
(1)
> '(1 . ())
(1)
> (define x '())
> x
()
> (cons 1 (cons 2 x))
(1 2)
> (define impr (cons 1 (cons 2 3)))
> impr
(1 2 . 3)
> (pair? impr)
#t
> (list? impr)
#f
> (define fact
  (lambda (n)
    (if (zero? n)
	1
	(* n (fact (- n 1))))))
> (fact -4)
  C-c C-c  C-c C-c
break> 
q
> 3
3
> (define fact
  (lambda (n)
    (if (negative? n)
	"error"
	(if (zero? n)
	    1
	(* n (fact (- n 1)))))))
> (fact -4)
"error"
> (fact 6)
720
> (define fact
  (lambda (n)
    (if (negative? n)
	"error"
	(fact-acc n 1))))
> 
(define fact-acc
  (lambda (n acc)
    (if (zero? n)
	acc
	(fact-acc (- n 1) (* n acc)))))
> (fact2 -5)
Exception: variable fact2 is not bound
> (define fact2
  (lambda (n)
    (if (negative? n)
	"error"
	(fact-acc n 1))))
> (fact2 -5)
"error"
> (trace fact-acc)
(fact-acc)
> (fact2 5)
|(fact-acc 5 1)
|(fact-acc 4 5)
|(fact-acc 3 20)
|(fact-acc 2 60)
|(fact-acc 1 120)
|(fact-acc 0 120)
|120
120
>