有固定性的乐趣

Mat*_*hid 7 haskell

好的,所以这是一个愚蠢的问题.我已经定义了一个新的#运算符,我正在试图找出固定性声明应该是什么.

  1. 我想#之后 申请++.这是否意味着优先级应高于更低的++?(++优先5.)

  2. 类型是(#) :: Foo -> Bar -> Foo.我想要左联想还是右联想?因为在我看来,其中一个会进行x # y # z类型检查,而另一个则不会.

我知道这可能看起来微不足道,但我总是总是似乎得到这个错误...

Dav*_*vid 9

  1. $具有最低优先级(0)并$始终应用于"最后",因此您希望#优先级低于++.此外,您还可以比较的优先级*+.

  2. 左关联意味着x # y # z = (x # y) # z(这也是左折叠的运作方式).x # (y # z)不会打字,但(x # y) # z会,所以你希望它是联想的.