1 haskell function list apply traversable
如果我想要类似的东西,我应该使用什么
[a->b] -> a -> [b]
Run Code Online (Sandbox Code Playgroud)
基本上我有一个函数列表,所有函数都接受一个值a并返回b。我想将所有这些应用到一个a并得到结果[b]。
我应该使用哪一种?
谢谢
Jos*_*ica 10
你不需要Traversable,只需Functor:
swingMap f x = fmap ($ x) f
Run Code Online (Sandbox Code Playgroud)
另见的swing功能(这相当于swing fmap)。
或者,如果您使用的是Edward Kmett的distributivelibrary,则可以通过使用from Data.Distributive来充分利用此答案(仅 aFunctor而不是 a Traversable)和chi 的答案(避免为作业定义自定义函数)。distribute
您可以使用sequence, 专门用于(->) amonad。通过这种方式,您可以避免为作业定义自定义函数——它已经存在了。
> :t sequence
sequence :: (Traversable t, Monad m) => t (m a) -> m (t a)
> :t sequence :: [a->b] -> a -> [b]
sequence :: [a->b] -> a -> [b] :: [a -> b] -> a -> [b]
> sequence [id,(10+),(10-)] 3
[3,13,7]
Run Code Online (Sandbox Code Playgroud)
(sequenceA并且traverse id,相同,也可以工作)
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |