Haskell中的函数保护语法

Sud*_*ha 2 syntax haskell functional-programming

fib::Int->Int
fib n
    n==0        = 1
    n>1     = error "Invalid Number"
Run Code Online (Sandbox Code Playgroud)

这个函数给了我一个错误

Syntax error in declaration (unexpected symbol "==")
Run Code Online (Sandbox Code Playgroud)

我不确定该功能与阅读材料相比有什么不对,它看起来是一样的

Don*_*art 13

你错过了一些语法:

fib :: Int -> Int
fib n 
    | n == 0  = 1
    | n > 1   = error "Invalid Number"
Run Code Online (Sandbox Code Playgroud)

这也可以在没有第一个换行符的情况下编写:

fib :: Int -> Int
fib n | n == 0  = 1
      | n > 1   = error "Invalid Number"
Run Code Online (Sandbox Code Playgroud)

这个函数更自然地用模式匹配表达:

fib :: Int -> Int
fib 0 = 1
fib n | n > 1 = error "Invalid number"
Run Code Online (Sandbox Code Playgroud)

你可能对fibonaccis目录感兴趣.