haskell从“脚本”文件中加载数据

时间:2018-08-10 12:19:17

标签: haskell

我一直在阅读“学习哈斯凯尔的伟大成就”,在这一部分中:

“在脚本中放置一个代表人的字符串,然后将该脚本加载到GHCi中:

mysteryDude = "Person { firstName =\"Michael\"" ++
                      ", lastName =\"Diamond\"" ++ 
                      ", age = 43}"

我们在这样的几行中编写了字符串,以提高可读性。如果我们想读取该字符串,则需要告诉Haskell我们期望返回哪种类型:

ghci> read mysteryDude :: Person

但是我不知道如何创建'script',它位于mysteryDude.hs文件中,然后我需要用>:l mysteryDude.hs加载它 还是什么。但是我尝试了一下,但出现了这个错误:

*Main> read mysteryDude.hs :: Person

<interactive>:50:23: error:
    Not in scope: type constructor or class ‘Person’
*Main> read mysterDude.hs :: Person

我看到在网络here中,他们对其进行了更改,并且没有以相同的方式进行更改,因此,这可能是一个错误。

但是即使在此示例中有错误,我也想知道如何编写“脚本”并从中加载数据。

1 个答案:

答案 0 :(得分:2)

从评论中我推断出问题所在。 ghci中的:l会忘记之前的所有:l和您在REPL中所做的所有定义。您应该:

  • 使文件彼此导入(避免导入周期)。文件名和模块名称必须匹配。
  • import都是ghci文件。同样,模块名称应与文件名称匹配。
  • 在REPL的顶层中进行所有定义。您可以使用:{ :}周围的多行代码段。不建议您