2016-10-06 4 views
0

Я новичок в Haskell, и я попытался введя в WinGHCi:Простой поиск по шаблону в Haskell

Prelude> factorial 0=1 
Prelude> factorial n=n*factorial (n-1) 
Prelude> factorial 5 

Но когда я это сделал, WinGHCi застрял и ничего не делать. Почему он не распечатал факториал 5?

ответ

4

Когда вы пишете в 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) 

, который RECURSE навсегда на любом входе.

В GHCi, вы можете как с помощью

> let f 0 = 1 ; f n = 1 + f (n-1) 

но лучший подход редактировать .hs файл, напишите ваши определения там, а затем загрузить его в GHCi.

Смежные вопросы