我在Haskell中有一些代码可以工作,我想将其转换为Agda。
这是Haskell代码
main = do
putStrLn "A string"
putStrLn "second string"
输出为
A string
second string
我尝试用
将其转换为Agdaopen import Common.IO
main = do
putStrLn "A string"
putStrLn "second string"
但是我只收到错误消息
'_>>_ needs to be in scope to desugar 'do' block'
(完整的错误截图:https://imgur.com/a/3lxdwR7)
编辑:这是我最好的猜测,它显然行不通,但是我是Agda的新手,有什么想法吗?
open import Common.IO
_>>_ : ? → ? → ?
??? = ???
??? = ???
main = do
putStrLn "A string"
putStrLn "second string"
...如何使我的代码在Agda上运行?
答案 0 :(得分:4)
我不知道Common.IO
是什么。使用标准库,您可以编写:
open import IO
open import Codata.Musical.Notation
main = run do
♯ putStrLn "A string"
♯ putStrLn "second string"
有趣的♯_
是我们所说的音符:IO
可能导致无限的计算,因此我们必须使用共归类型。
但是请注意,标准库中的IO是在未将符号添加到Agda之前创建的,因此,如果它们兼容,那只是偶然。最好坚持>> = (并尝试尽快编写纯代码,仅在边界处使用IO)。