【发布时间】:2013-11-20 19:06:57
【问题描述】:
当我使用 MultiParamTypeClasses 时,我可以创建忽略类型参数之一的类函数(即,像下面的“identity”)。
{-# LANGUAGE MultiParamTypeClasses #-}
data Add = Add
data Mul = Mul
class Test a b where
identity::a
instance Test Int Add where
identity = 0
instance Test Int Mul where
identity = 1
(这是一个精简版,当然在完整的程序中还有其他函数会使用“b”)。
示例编译,但我永远无法访问身份!
main = do
putStrLn (show (identity::Int))
导致“(Test Int b0)没有因使用'identity'而产生的实例。
有没有办法访问身份?如果不是,编译器不应该禁止我创建一个不使用所有类型参数的类函数吗?
【问题讨论】:
标签: haskell