Поставил тег лисп просто потому, что лисперы, в отличии от, возможно заинтересуются, или уже интересуются этим вопросом, однако, это касается программирования вообще.
Все знают, наверное, lambda-like определение if-then-else. Вот один из вариантов:
(define t (lambda(x y) (x)))
(define f (lambda(x y) (y)))
(define if_ (lambda(a b c) (a b c)))
(if_ t (lambda() (write 'foo)) (lambda() (write 'bar))) ; foo
(if_ f (lambda() (write 'foo)) (lambda() (write 'bar))) ; bar
Что тут бросается в глаза в первую очередь? То, что if тут является пятым колесом. Он ничего не делает, и, по сути, нахер не нужен.
(t (lambda() (write 'foo)) (lambda() (write 'bar))) ; foo
Откуда это все пошло? Думаю, основная причина — в засилии математического быдла в отрасли, на заре CS. Они подогнали все под свои извращенные стандарты, притянули за уши математику и логику, а теперь, нормальные пацаны вынуждены разгребать за ними кучу говна, в отчаянных попытках отделить зерна от плевел.