用输出函数haskell写文件

时间:2014-07-24 08:28:38

标签: file haskell io

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

一个非常简单的例子:

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

calc = do return (1+1)

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

错误是:

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

感谢。

1 个答案:

答案 0 :(得分:5)

此代码中有几个错误:

  • 您应该删除do以简化funccalc。从技术上讲,这不是一个错误,但你不应该使用不必要的do,因为它们会使你的代码混乱。
  • 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

删除回复的原因是return 的行为与C语言中的return相似。 Haskell中的return在monadic动作中包含一个值,而在类C语言中,它只返回一个表达式的值或一个变量作为函数的结果。我建议阅读this章节以获取更多信息,因为它很好地涵盖了Haskell的输入和输出。

相关问题