Синтаксис функции защиты в Haskell - PullRequest
2 голосов
/ 24 апреля 2011
fib::Int->Int
fib n
    n==0        = 1
    n>1     = error "Invalid Number"

эта функция выдаёт мне ошибку

Syntax error in declaration (unexpected symbol "==")

Я не уверен, что не так с функцией, если сравнивать с материалом для чтения, он выглядит так же

1 Ответ

13 голосов
/ 24 апреля 2011

Вам не хватает некоторого синтаксиса:

fib :: Int -> Int
fib n 
    | n == 0  = 1
    | n > 1   = error "Invalid Number"

Это также может быть написано без первой новой строки:

fib :: Int -> Int
fib n | n == 0  = 1
      | n > 1   = error "Invalid Number"

Эта функция более естественно выражена с помощью сопоставления с образцом:

fib :: Int -> Int
fib 0 = 1
fib n | n > 1 = error "Invalid number"

и вас может заинтересовать каталог фибоначчи .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...