Итак, я играл с Haskell за последние пару дней, и решил, что сделаю базовое определение последовательности Фибоначчи. Так что я написал этот код:Haskell Says My Guard имеет ошибку анализа
main = do
fib :: (Integral a) => Int -> Int
fib x
| x == 0 = 0
| x == 1 = 1
| x >= 2 = fib (x - 2) + fib (x - 1)
do { print (fib 5) }
И я получаю сообщение об ошибке, говорящее:
4:17: parse error on input `|'
Я подозревал, что на вкладке ошибки, поэтому я попытался все пробельные исправить я мог найти, но я просто не могу найти что не так!
EDIT: Так что я сделал то, что предложил людям, и у меня есть этот код прямо сейчас:
fib :: (Integral a) => Int -> Int
main = do
fib x
| x == 0 = 0
| x == 1 = 1
| x >= 2 = fib (x - 2) + fib (x - 1)
print (fib 5)
И я получаю ту же ошибку.
Любого почему кладут подпись типа и функции в блок do? – jakubdaniel
Я не знал, что делаю. – ThePhillipParadox