我正在尝试将do-notation
中的IO
与agda-stdlib
一起使用,但是奇怪的是,_>>_
的类型使用∞
:{{ 1}}。因此,我需要在应用程序之间插入{B : Set a} (m₁ : ∞ (IO B)) (m₂ : ∞ (IO A)) → IO A
,但这使用法很尴尬。例如,♯
是构建打印行的程序所必需的:
♯
此外,使用更多行对其进行扩展无法检查。我必须像这样放弃main : IO ⊤
main = do
♯ (putStrLn "hi")
♯ (return tt)
:
do-notation
哪个看起来糟透了。我可以重新定义main : IO ⊤
main =
♯ (♯ putStrLn "hi" >>
♯ putStrLn "ho") >>
♯ return tt
和_>>_
:
_>>=_
但是我假设这不是我期望的。所以,我想念什么吗?正确的使用方式是什么?
答案 0 :(得分:1)
在标准库中实现IO
之前要在Agda中添加do
标记,因此在编写时并未考虑do
标记。 Ulf的Agda prelude具有IO
的最新实现,该实现确实支持do
表示法。