次の2つのクライスリ矢印がある場合:
stdoutProcessA :: Kleisli Maybe String (IO String)
writeToFileA :: Kleisli Maybe (FilePath, String) (IO ())
私は次のような何かを書くことができるようにしたいと思います:
compile = proc src -> do
output <- stdoutProcessA -< "..."
writeToFileA -< ("...", output)
...
String
と一致しないため、もちろん機能しませんIO String
。一方、両方を定義してタイプにすることは可能ですstdoutProcessA
がwriteToFileA
、その場合、他のものに必要なKleisli IO ...
タイプの矢印でそれらを構成することはできません。Kleisli Maybe ...
私はまだ矢印の経験があまりないので、おそらく明らかな何かが欠けています。上記をどのように行うのでしょうか?