使用ghci
我计算过:
Prelude> let m = [1,2]
Prelude> let ys = [4, 5, 6]
Prelude> m >>= (\x -> ys >>= (\y -> return (x, y)))
[(1,4),(1,5),(1,6),(2,4),(2,5),(2,6)]
上面的单子表达式似乎不对应于单子结合律的任何一边:
(m >>= f) >>= g ≡ m >>= (\x -> f x >>= g)
我想知道如何将单子关联性应用于表达式:
m >>= (\x -> ys >>= (\y -> return (x, y)))
因为return (x,y)
对周围的函数和包含它的函数都关闭,所以似乎存在于结合律左侧的中间单子(m >>= f)
在此示例中不存在。