使用fun fun x = x + 1形式定义Haskell函数

123*_*234 -2 haskell

如果我有如下功能:

f::[a]->Integer
f  [] = 0
f (x:cx) = 1 + (f cx)
Run Code Online (Sandbox Code Playgroud)

如何用'let'定义main内部的函数?

我知道我可以在main中定义一个函数:例如

let f x = x + 1
Run Code Online (Sandbox Code Playgroud)

但我是如何模式匹配的"f [] = 0"呢?

谢谢

mel*_*ene 5

你仍然可以这样做:

main =
    let f  [] = 0
        f (x:cx) = 1 + (f cx)
    in
    print (f "abc")
Run Code Online (Sandbox Code Playgroud)

要么

main =
    let
        f  [] = 0
        f (x:cx) = 1 + (f cx)
    in
    print (f "abc")
Run Code Online (Sandbox Code Playgroud)

关键部分是f两个方程中的s必须排列并且缩进超过let.