basic haskell:简单函数错误

basic haskell:简单函数错误,haskell,Haskell,我不确定我的代码出了什么问题,但当我尝试运行它时,我发现 Couldn't match type `Integer' with `Int' 我用的是GHCi。我想创建一个基本的程序,通过商店,给我所有的客户姓名,这样我就可以搜索他们租了什么东西(图书馆)。有没有更好的方法得到这些名字 这是我的代码: type Name = String type Customer = (Name,Int) type shop = [Customer] shop = [cust1, cust2] cust1

我不确定我的代码出了什么问题,但当我尝试运行它时,我发现

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 

GHCi将默认在
Int
上使用
Integer
。您应该将元组的类型指定为
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

GHCi将默认使用
整数
超过
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

谢谢,您总是很有帮助!我改变了类型的函数+声明,这样我就不必每次都这么做了,而且它也不是必须是Int而不是Integer。没问题!记住要接受,这样别人才能知道答案是否解决了(谢谢,你总是那么乐于助人!我改变了类型的函数+声明,这样我就不必每次都这么做了,而且它也不是必须是Int而不是Integer。没问题!记住要接受,这样别人才能看到答案是否已解决=)