9

我在 LYAH 练习。

phoneBook.hs 文件包含以下代码:

电话簿 :: [(字符串,字符串)]

在尝试编译上述代码时,出现以下错误:

*Main> :load "/home/optimight/phoneBook.hs" [1 of 1] 编译 Main(/home/optimight/phoneBook.hs,解释)

/home/optimight/phoneBook.hs:1:1:“phoneBook”的类型签名缺少随附的绑定失败,已加载模块:无。

在 brano 的回答和对该答案的后续评论之后添加的问题:我们如何为上述类型签名提供实现?

如果我添加这个:

输入电话簿 = [(字符串,字符串)]

我收到以下错误:

Prelude> :load "/home/optimight/phoneBook.hs" [1 of 1] 编译主程序(/home/optimight/phoneBook.hs,解释)

/home/optimight/phoneBook.hs:2:6:类型或类声明格式错误:电话簿失败,加载模块:无

4

2 回答 2

11

您需要为电话簿提供一个实现。

phoneBook :: [(String, String)] 只是签名。

于 2012-07-27T07:41:40.370 回答
1

如果你想声明一个类型,它必须有首字母大写,即type PhoneBook = [(String, String)]

如果你想声明一个函数,那么你需要要么只提供它的定义(绑定),要么提供它的定义和它的类型签名。编译代码的最小努力是:

phoneBook :: [(String, String)]
phoneBook = undefined

然后你可以undefined用任何类型的值替换,[(String, String)]例如[("Person","Number")]

于 2012-07-27T08:53:18.650 回答