Du coup j'ai eu un doute mais oui c'est possible (j'ai pas réussi à le faire avec defmacro parce que skill issues)
(define true (lambda (t f)t))
(define false (lambda (t f)
f))
(define-syntax if
(syntax-rules ()
((_ pred t f)
((lambda (a b)
((pred a b)))
(lambda () t) (lambda () f)))))
(if true (display "True\n") (display "False"))
; N'affiche que "True", la branche else n'est pas évaluée
(if false (display "True\n") (display "False"))
; Idem pour "False"