将我自己类型的项添加到Haskell中的列表中?

Ash*_*Ash 2 haskell types function list

我需要将自己的数据类型添加到函数列表中,这是我的代码:

type Car = (String, String, Int, String)

testDatabase :: [Car] 
testDatabase = [("Ford", "Petrol", 2006, "Sport")]

addNewCar :: Car 
addNewCar newCar = newCar:testDatabase
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

ERROR file:.\template.hs:20 - Type error in explicitly typed binding
*** Term : addNewCar
*** Type : ([Char],[Char],Int,[Char]) -> [([Char],[Char],Int,[Char])]
*** Does not match : Car
Run Code Online (Sandbox Code Playgroud)

(对不起,这是一个垃圾解释,我只是在与Haskell挣扎).先感谢您!!

灰!

sep*_*p2k 5

推断类型addNewCar([Char],[Char],Int,[Char]) -> [([Char],[Char],Int,[Char]),与Car -> [Car].相同.这种类型表示这addNewCar是一个接收汽车并返回汽车列表的功能.这正是您想要的类型.

但是,您的类型签名表明这addNewCar只是类型的值Car.这是错误的,并与推断类型冲突.这就是你得到错误的原因.因此,要解决此问题,只需删除类型签名或将其更改为addNewCar :: Car -> [Car].