我很难理解这里发生了什么。我想实现一个数据类型Direction
并为它定义一个交换运算符.>
。到目前为止,我有这个:
data Direction = N | E | S | W | None
(.>) :: Direction -> Direction -> [Direction]
N .> S = [None]
W .> E = [None]
(.>) = flip (.>)
我得到错误Equations for ‘.>’ have different numbers of arguments
。这就是我不明白的,因为在 ghci 中检查时等式的两边都有相同数量的参数:
λ> :t (.>)
(.>) :: Direction -> Direction -> [Direction]
λ> :t flip (.>)
flip (.>) :: Direction -> Direction -> [Direction]
我可以通过编写d1 .> d2 = d2 .> d1
而不是使用来解决错误,flip
但我不明白为什么翻转不起作用。有任何想法吗?
编辑:删除第二个不相关的问题