2

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

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 
4

1 回答 1

4

GHCi 将默认使用Integerover 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

于 2013-10-11T22:04:12.453 回答