用输出函数haskell写文件

0 io haskell file

我想自动写一个文件输出我的程序,但是出现了一些错误.我是哈斯克尔的新手.

一个非常简单的例子:

func =  do
writeFile "file.txt" show(calc)

calc = do return (1+1)
Run Code Online (Sandbox Code Playgroud)

我想要这样的东西.当我执行该函数时,创建一个文件并在其上写

错误是:

错误"test.hs":5 - 输入中的语法错误(意外的`=')

谢谢.

Thr*_*eFx 5

此代码中有几个错误:

  • 您应该删除dos以简化func和calc.从技术上讲,这不是一个错误,但你不应该使用不必要的dos,因为它们只会弄乱你的代码.
  • show有类型Show a => a -> String,而calc有类型IO String.因为类型不匹配,您的程序将无法编译.

这是一个具有相同功能的程序,它编译:

func :: IO () -- is an IO action
func = writeFile "file.txt" (show calc) -- removed the do

calc :: Integer -- has type integer, meaning "show" is able to operate on it
calc = 1+1 -- removed do and return
Run Code Online (Sandbox Code Playgroud)

除去返回的原因是,return它不会表现得像return在类似C语言.return在Haskell中,在一个monadic动作中包含一个值,而在类C语言中它只返回一个表达式的值或一个变量作为函数的结果.我建议阅读这一章以获取更多信息,因为它涵盖了在Haskell输入和输出相当不错.