当我尝试执行使用类型参数调用数据的此函数时,出现错误。Haskell中的类型参数问题
data Car a b c = Car { company :: a
, model :: b
, year :: c
} deriving (Show)
myCar :: Car -> String
myCar (Car {company = c, model = m, year = y}) = "This " ++ C++ " was made in " ++ m ++ " " ++ show (y)
我收到此错误
* Expecting three more arguments to `Car'
Expected a type, but `Car' has kind `* -> * -> * -> *'
* In the type signature:
myCar :: Car -> String
它的工作原理,如果我提前使用类型的参数,如下面
data Car = Car { company :: String
, model :: String
, year :: Int
} deriving (Show)
感谢。
“我得到这个错误”正确的是,因为写入的代码没有任何意义。 “如果我不使用下面的类型参数,它就可以工作”也完全可以,这绝对是正确的。所以有什么问题? –
道歉,我已经更新了这个问题,它在我尝试使用数据类型时起作用,但在尝试使用类型参数时不起作用。 – Srinivas
再次,问题是什么?你期望'公司'或'模型'不是'字符串','年份'不是'Int'的东西吗?为什么? –