例如,这不是类型检查
\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
等等
固定声明可以是本地的,但必须伴随定义,因此您必须编写类似的内容
foo cons nil = 'a' # 'b' # nil
where (#) = cons
infixr 5 #
要么
foo = \cons nil -> let (#) = cons; infixr 5 # in 'a' # 'b' # nil
等等