Ответ 1
Два отдельных оператора let
интерпретируются независимо друг от друга. Сначала определена функция ft 0 = 1
, а затем определена новая функция ft n = n * ft (n - 1)
, перезаписав первое определение.
Чтобы определить одну функцию с двумя случаями, вы должны поместить оба случая в один оператор let
. Чтобы сделать это в одной строке в приглашении GHCI, вы можете разделить эти два случая на ;
:
Prelude> let ft 0 = 1; ft n = n * ft (n - 1)
Prelude> ft 5
120