3
如果我有以下兩種Kleisli箭頭:將克利斯裏電梯提升到IO?
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 ...
類型的箭頭來組合它們,這是我需要的其他用途。
我對箭頭還不是很有經驗,所以我可能錯過了一些明顯的東西。怎麼會這樣做呢?
是的,實際上它們對於'Kleisli IO String String'類型'和'Kleisli IO(FilePath,String)()'來說更合理,但是我不能將它們與其他「Kleisli Maybe」類型的箭頭 - 是否有將不同單體中的克萊斯箭頭結合的方法? –