Hoogle はこれに適しています。間違いなく、同じ型の関数を見つけるための適切なツールです。
それが簡単で、通常の場所のどこにも現れないことを考えると、他のものの負荷全体をインポートしないという理由もあって、あいまいなモジュールからインポートするのと同じように自分で書くこともできます。
(余談: いくつかのパッケージは hoogle から検索できないようです。そのため、探している関数、モジュール、またはパッケージ名がわかっているが、hoogle が知らない場合は、hayoo を使用してください。)
プラグインしたい
(>=>) :: Monad m => (a -> m b) -> (b -> m c) -> (a -> m c)
からControl.Monad
。見つけるまでずっと欲しかった合成演算子です。>>=
私の見解よりも、モナドを扱うのはより自然な方法です。
直接使用することもできます。
f1234 = f1 >=> f2 >=> f3 >=> f4
をフーグルすると表示される(a -> m a) -> (a -> m a) -> (a -> m a)
ため、何かのリストを組み合わせたものを探している場合の今後の戦略は、2 つを組み合わせた関数を検索し、関数の 1 つを使用することfold
です。
したがって
chain' :: Monad m => [a -> m a] -> a -> m a
chain' = foldr (>=>) return
f1234 = chain' [f1,f2,f3,f4]
また
chain'' :: Monad m => a -> [a -> m a] -> m a
chain'' = flip $ foldr (>=>) return
あなたが望むなら、あなたのものはとにかく大丈夫です。