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

最佳答案

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

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

它只是fmap通过两层仿函数来实现的功能。对于函数,这三个fmap都专用于(.)

关于haskell - Haskell(。:) operator defined?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29310780/

10-12 16:50