Rob*_*ert 3 haskell list pattern-matching
我想在Haskell中使用以下代码/功能:
test :: String -> String -> Bool
test (x:xs) (x:ys) = True
test _ _ = False
Run Code Online (Sandbox Code Playgroud)
这应检查两个列表是否以完全相同的元素开头.
但这不起作用.
我的编译器说:Conflicting definitions for x
我认为像这样匹配的模式必须使用函数式语言.我刚才和Prolog一起工作,我很确定它在那里工作:/
这是不是在Haskell中实现的还是我的语法错了?
你可能想要那样的东西.
test :: String -> String -> Bool
test (x:xs) (y:ys) = x == y
test _ _ = False
Run Code Online (Sandbox Code Playgroud)
正如@TikhonJelvis注意到的那样,haskell不是一个Prolog,所以你无法检查模式匹配中变量的相等性.
| 归档时间: |
|
| 查看次数: |
344 次 |
| 最近记录: |