Haskell中的 (.:) 运算符定义在哪里?

5

显然,((.).(.)) 运算符的常用名称是 (.:)(.:) 是在哪里定义的?还是我必须自己定义它?


6
请注意,FP Complete的Hoogle在这些场景中非常有帮助。 - Sibi
如果你有使用某个名称的代码,并成功加载到 ghcicabal repl 中,你可以输入 :i .: 来获取一些相关信息。 - Heimdell
1个回答

8

你可以在组合库中找到它,以及其他高阶函数组合。这个运算符在base中没有定义。如果你不想将一个(非常小的)包作为依赖添加进来,那么就自己定义它,虽然我会使用更通用的版本,该版本使用fmap

(.:) :: (Functor f, Functor g) => (a -> b) -> f (g a) -> f (g b)
(.:) = fmap fmap fmap

这只是通过两层函子进行函数映射的fmap。 对于函数,这三个fmap都专门化为(.)


哦,太棒了的库。谢谢。 - Ana
不错的 .: 运算符,实际上对于其他的函子比函数更有用。 - Joachim Breitner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接