我试图弄清楚如何用前缀符号重写一元计算(不是为了真正的实际目标,只是为了研究),但是一个 lambda 看不到另一个参数的问题
所以给出一个工作示例
*Main> [1, 3, 4] >>= \x -> [x + 1, x - 1] >>= \y -> return (y*x)
[2,0,12,6,20,12]
重写的一个显示没有看到其他 lambda 的参数的错误
*Main> (>>=) ( (>>=) [1, 3, 4] (\x -> [x + 1, x - 1]) ) (\y -> return (y*x))
<interactive>:133:68: Not in scope: `x'
但是如果我让最后一个不使用它(通过将 x 替换为 y),则计算开始工作
*Main> (>>=) ( (>>=) [1, 3, 4] (\x -> [x + 1, x - 1]) ) (\y -> return (y*y))
[4,0,16,4,25,9]
那么前缀符号的完全重写在技术上是可能的吗?或者访问其他 lambdas 参数的这个属性是中缀符号独有的?