Есть решения, на которые можно часами просто смотреть.
Одно из них, пример из SICP на языке scheme:

; начало clap.scm
(define (a-plus-abs-b a b)
   ((if (> b 0) + -) a b))

(display (a-plus-abs-b 2 -2))
; конец clap.scm

semka@abahachi:~/src/scheme/tutor$ guile -s clap.scm
4

Это чудесная штука.
Она просто суммирует a и |b|.
Как работает объяснить? (-;