Всем привет.
Давно хотел взяться за ф-ое программирование. Пару раз пробовал lisp, но как-то не пошло. А потом наткнулся на erlang и мне понравилось. Там всё как-то полегче объясняется.
Сейчас читаю sicp, а там scheme. Ну, в общем, начал про scheme читать и вот у меня такой вопрос:
Допустим у меня такой итеративный факториалокод на erlang:
fact(B) ->
i_fact(B, 1).
i_fact(0, A) ->
A;
i_fact(B, A) ->
i_fact(B-1, A*B).
на scheme:
(define (i_fact b a)
(if (= b 0)
a
(i_fact (- b 1) (* a b))))
(define (fact b)
(i_fact b 1))
Можно ли избавится от if в scheme, что б так же как в erlang конкретный clause (или как он там называется, я не уверен, что правильно) выбирался автоматом, а то как то громоздко получается.
Спасибо.