#haskell
#haskell
Вопрос:
Я новичок в Haskell, и я попытался ввести следующее в WinGHCi:
Prelude> factorial 0=1
Prelude> factorial n=n*factorial (n-1)
Prelude> factorial 5
Но когда я это сделал, WinGHCi застрял и ничего не делал. Почему он не распечатал факториал 5?
Ответ №1:
Когда вы пишете в GHCi
> let x = 4
> let x = 5
второе определение переопределяет первое, удаляя его из среды. Это также справедливо для функций.
> let f 0 = 1
> let f n = 1 f (n-1)
эквивалентно
> let f n = 1 f (n-1)
который будет повторяться вечно при любом вводе.
В GHCi вы можете использовать оба варианта, используя
> let f 0 = 1 ; f n = 1 f (n-1)
но лучший подход — отредактировать .hs
файл, записать туда свои определения, а затем загрузить его в GHCi.