次の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 ...
私はまだ矢印の経験があまりないので、おそらく明らかな何かが欠けています。上記をどのように行うのでしょうか?