我在LYAH练习。
phoneBook.hs文件包含以下代码:
phoneBook :: [(String,String)]
在尝试编译上述代码时,我遇到以下错误:
*主> :加载“/home/optimight/phoneBook.hs” [1/1]编译Main(/home/optimight/phoneBook.hs,解释)
/home/optimight/phoneBook.hs:1:1: `phoneBook'的类型签名缺少附带的绑定 失败,模块加载:无。
在brano的答案和随后对此答案的评论之后添加了问题:我们如何为上述类型签名提供实施?
如果我加上这个:
输入phoneBook = [(String,String)]
我收到以下错误:
前奏> :加载“/home/optimight/phoneBook.hs” [1/1]编译Main(/home/optimight/phoneBook.hs,解释)
/home/optimight/phoneBook.hs:2:6: 格式错误的类型或类声明:phoneBook 失败,加载模块:无
答案 0 :(得分:7)
您需要为phoneBook提供实现。
phoneBook :: [(String, String)]
只是签名。
答案 1 :(得分:1)
如果要声明类型,则必须具有初始大写,即type PhoneBook = [(String, String)]
。
如果要声明一个函数,则需要提供其定义(绑定)或其定义和类型签名。编译代码的最小努力是:
phoneBook :: [(String, String)]
phoneBook = undefined
然后,您可以将undefined
替换为[(String, String)]
类型的任何值,例如[("Person","Number")]
。