例如,这不是类型检查
\cons nil -> 5 `cons` 3 `cons` nil
这也不是
\(#) -> 5 # 3 # nil
虽然这两者都有
\cons nil -> 5 `cons` nil \(#) nil -> 5 # nil
有没有办法在lambdas中为运算符分配infixites.我试过了
infixr 5 # foo = \(#) nil -> 5 # 3 # nil
这给出了没有定义#
和的错误
foo = \(infixr 5 #) nil -> 5 # 3 # nil
这只是一个语法错误.
我能做什么?
固定声明可以是本地的,但必须伴随定义,所以你必须写一些类似的东西
foo cons nil = 'a' # 'b' # nil where (#) = cons infixr 5 #
要么
foo = \cons nil -> let (#) = cons; infixr 5 # in 'a' # 'b' # nil
等等