Haskell(。:)运算符在哪里定义?

时间:2015-03-27 21:52:59

标签: haskell operators

显然((.).(.))运算符的通用名称是(.:)(.:)在哪里定义?或者我必须自己定义吗?

1 个答案:

答案 0 :(得分:8)

您可以在composition库中找到它,以及其他更高阶的函数组合。 base中未定义此运算符。如果您不想将(非常小的)包添加为依赖项,那么只需自己定义,但我会使用使用fmap的更通用的版本:

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

只是fmap通过两层仿函数的函数。对于函数,这些fmap中的所有三个都专门用于(.)