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