Sav*_*xey 1 haskell functional-programming function
我有
functions :: IO[a -> b] -- IO List of functions
param :: IO[a] -- Single parameter
Run Code Online (Sandbox Code Playgroud)
而且我想得到
result :: IO[b]
result = IO[*first function* <$> param, *second function* <$> param, ...]
Run Code Online (Sandbox Code Playgroud)
我不知何故可以获得类型的结果IO[IO b],但我想要IO[b]
通过"单个参数"我假设你的意思是一个元素列表.如果是这样,那么这就是它的完成方式:
result :: IO [b]
result = do
fs <- functions -- fs :: [a -> b]
xs <- param -- xs :: [a]
let ys = fs <*> xs -- ys :: [b]
return ys
Run Code Online (Sandbox Code Playgroud)
请注意,由于xs是一个元素列表,因此您实际上是应用fs该值的每个元素.
这与:
import Control.Applicative (liftA2)
result :: IO [b]
result = liftA2 (<*>) functions param
Run Code Online (Sandbox Code Playgroud)
希望有所帮助.