用有趣的x = x + 1形式定义Haskell函数

时间:2019-01-21 18:56:10

标签: haskell

如果我具有以下功能:

f::[a]->Integer
f  [] = 0
f (x:cx) = 1 + (f cx)

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

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

let f x = x + 1

但是我如何为"f [] = 0"进行模式匹配?

谢谢

1 个答案:

答案 0 :(得分:5)

您仍然可以通过相同的方式进行操作:

{
    "emmet.includeLanguages": { "javascript": "javascriptreact" },
    "emmet.syntaxProfiles": { "javascript": "jsx" },
    "emmet.triggerExpansionOnTab": true,
    "emmet.preferences": { "jsx.classAttributeName": "styleName" },
    "cssModules.camelCase": true
}

main =
    let f  [] = 0
        f (x:cx) = 1 + (f cx)
    in
    print (f "abc")

关键部分是两个等式中的main = let f [] = 0 f (x:cx) = 1 + (f cx) in print (f "abc") 必须对齐并且缩进超过f