It seems that if the second argument to if is not evaluated. Thanks! (define (try a b) (if (= a 0) 1 b)) ;Value: try
; Looks like applicative order evaluation: (try 0 (/ 1 0)) ;Division by zero signalled by /. ; Looks like normal order evaluation from the left (if (= 1 1) 1 (/ 1 0)) ;Value: 1 ; How is it implemented? (pp if) ;Syntactic keyword may not be used as an expression: #[keyword-value-item 16]