W jaki sposób `if` nie ocenia wszystkich argumentów?
Próbuję nauczyć się i zrozumieć język programowania Lisp do głębokiego poziomu. Funkcja+
ocenia swoje argumenty w odpowiedniej kolejności:
(+ 1 (+ 1 2))
(+ 1 2)
zostanie poddany ocenie, a następnie(+ 1 3)
zostanie oceniony, aleif
funkcja działa inaczej:
(if (> 1 2) (not-defined 1 2) 1)
Jako forma(not-defined 1 2)
nie jest oceniany, program się nie psuje.
Jak ta sama składnia może prowadzić do innej oceny argumentów? Jak jestif
funkcja zdefiniowana tak, aby jej argumenty nie były oceniane?