例如,这不会键入check
cons nil -> 5 `cons` 3 `cons` nil
这个也没有
(#) -> 5 # 3 # nil
尽管这两者都有
cons nil -> 5 `cons` nil
(#) nil -> 5 # nil
有没有一种方法可以为lambdas中的运算符分配非确界。我试过
infixr 5 #
foo = (#) nil -> 5 # 3 # nil
这给出了没有定义CCD_ 1和的错误
foo = (infixr 5 #) nil -> 5 # 3 # nil
这只是一个语法错误。
我能做什么?
Fixity声明可以是本地的,但必须伴随定义,所以您必须编写类似的东西
foo cons nil = 'a' # 'b' # nil
where (#) = cons
infixr 5 #
或
foo = cons nil -> let (#) = cons; infixr 5 # in 'a' # 'b' # nil
等等。