如何为lambda中的运算符提供中缀



例如,这不会键入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

等等。

相关内容

  • 没有找到相关文章

最新更新