plt/racket — pull request #675 by gus-massa (2014-06-18 02:29:11+00:00)
Title: Optimize the argument of not

Optimize the argument of a “not” in a Boolean context. Also, recognize some constructors to eliminate them from the “not” argument.

(not (if x y 1)) => (not (if x y #t))
(not (list x (random) z)) => (begin (random) #f))

--
But this still doesn’t work: (not (if x y (list 1 2))) => (not (if x y #t))