没有附带的约束 - 这是什么意思?这个怎么运作?

Opt*_*ght 5 haskell haskell-platform

我在LYAH练习.

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

phoneBook :: [(String,String)]

在尝试编译上述代码时,我收到以下错误:

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

/home/optimight/phoneBook.hs:1:1:`phoneBook'的类型签名缺少附带的绑定失败,模块加载:无.

在对此答案进行回答之后添加了问题以及随后对此答案的评论:我们如何为上述类型签名提供实施?

如果我添加这个:

type phoneBook = [(String,String)]

我收到以下错误:

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

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

bra*_*ano 7

您需要为phoneBook提供实现.

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

  • @brano这完全是错误的.在Haskell中没有没有参数的功能.任何类型不包含` - >`的值都不是函数.如果你写`type PhoneBook = [(String,String)]`那么PhoneBook就是对的列表类型,但它本身不是一个列表或任何其他类型的值 - 它是一种类型. (4认同)