基本haskell:简单函数错误

时间:2013-10-11 22:03:00

标签: haskell

我不确定我的代码有什么问题,但是当我尝试运行它时,我得到了

Couldn't match type `Integer' with `Int'

我正在使用GHCi。我想创建一个基本程序,它将通过商店并给我所有客户名称,以便我可以搜索以找出他们租用的项目(库)。有没有更好的方法获得名字?

这是我的代码:

type Name = String
type Customer = (Name,Int)
type shop = [Customer]
shop = [cust1, cust2]

cust1 = ("Neil", 311)
cust2 = ("Fred", 0)

getName :: (String,Int) -> Name
getName (a,b) = a 

1 个答案:

答案 0 :(得分:4)

GHCi默认使用Integer而不是Int。您应该将元组的类型指定为cust1 = ("Neil", 311 :: Int)cust2 = ("Fred", 0) :: (String, Int)

更新后修改

如果您已经定义了Customer,则应将其写为

cust1 = ("Neil", 311) :: Customer
cust2 = ("Fred", 0) :: Customer

getName :: Customer -> Name
getName (a, b) = a

您还可以通过将getName定义为

来简化一些事情
getName :: Customer -> Name
getName = fst

使用ETA缩减和内置函数fst