我有一个像这样定义的类,所以它foo采用泛型类型并返回一个Integer:
class Foo a where
foo :: a -> Integer
Run Code Online (Sandbox Code Playgroud)
并定义了几个实例,以便它可以使用Bool和Char类型:
instance Foo Bool where
foo _ = 10
instance Foo Char where
foo _ = 20
Run Code Online (Sandbox Code Playgroud)
如果我现在想要为具有泛型类型的列表添加实例,我想要做这样的事情:
instance Foo [a] where
foo (t:ts) = (foo t) + (foo ts)
Run Code Online (Sandbox Code Playgroud)
但是,这是错误的.根据我目前的理解,我想假设Haskell推断出类型,并做了类似这样的事情:
foo [False,True] - > foo False + foo True - > 10 + 10 = 20
我看过几本书并阅读了关于多态性和类型类的知识,包括了解大好的Haskell!但仍然无法绕过如何解决这个问题?