【发布时间】:2017-02-11 08:16:47
【问题描述】:
我在Frege 中定义一个使用多种模式的函数时遇到了一些问题。基本上,我通过遍历元组列表来定义映射。我已将其简化为以下内容:
foo :: a -> [(a, b)] -> b
foo _ [] = [] --nothing found
foo bar (baz, zab):foobar
| bar == baz = zab
| otherwise = foo bar foobar
我收到以下错误:
E morse.fr:3: redefinition of `foo` introduced line 2
我见过像this 这样的其他例子,它们确实在函数定义中使用了多种模式,所以我不知道我做错了什么。为什么我在这里收到错误?我是 Frege 的新手(也是 Haskell 的新手),所以我可能缺少一些简单的东西,但我真的不认为这应该是一个问题。
我正在使用 3.24-7.100 版本进行编译。
【问题讨论】:
-
您可能需要在
(baz, zab):foobar模式周围添加括号。类似foo bar ((baz, zab):foobar)