根据 Hoogle 的说法,<=<
(Kleisli monad composition,或“left fish”) 和=<<
(reverse monad bind) 的固定性是infixr 1
. 如果我没看错的话,像这样的表达,说
print <=< return =<< return "foo"
应该是无效的,因为它等同于同样无效的
print <=< (return =<< return "foo")
但是由于某种原因,尽管第一个表达式在 Haskell 中似乎无效,但正如预期的那样,弗雷格似乎没有抱怨,并且<=<
在=<<
.
当我在 pointfree.io 上搞砸以弄清楚如何制作类似的东西时,我发现了这一点
foo >>= (bar <=< baz)
无积分,它给了我
bar <=< baz =<< foo
考虑到固定性,这看起来不太正确。