显然,((.).(.))
运算符的通用名称是(.:)
。 (.:)
在哪里定义?还是我必须自己定义它?
最佳答案
您可以在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/