Два отдельных оператора 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