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挣扎).先感谢您!!
灰!
推断类型addNewCar是([Char],[Char],Int,[Char]) -> [([Char],[Char],Int,[Char]),与Car -> [Car].相同.这种类型表示这addNewCar是一个接收汽车并返回汽车列表的功能.这正是您想要的类型.
但是,您的类型签名表明这addNewCar只是类型的值Car.这是错误的,并与推断类型冲突.这就是你得到错误的原因.因此,要解决此问题,只需删除类型签名或将其更改为addNewCar :: Car -> [Car].