我很难理解在我的代码中何时使用和何时不使用 typeclass。当然,我的意思是 创建我自己的,而不是使用已经定义的类型类。举个例子(非常愚蠢的例子),我应该这样做:
data Cars = Brakes | Wheels | Engine
data Computers = Processor | RAM | HardDrive
class Repairable a where
is_reparaible :: a -> Bool
instance Repairable Cars where
is_repairable (Brakes) = True
is_repairable (Wheels) = False
is_repairable (Engine) = False
instance Repairable Computers where
is_repairable (Processor) = False
is_repairable (RAM) = False
is_repairable (HardDrive) = True
checkState :: (Reparaible a) => a -> ...
checkState a = ...
(显然,这是一个愚蠢的、不完整的例子)。
但这对于一点用处来说是很多的,不是吗?为什么我不应该做一些简单的事情,只定义函数而不定义新的数据类型和类型类(及其实例)。
这个例子太简单了,但实际上我在 github 上浏览 Haskell 代码时经常看到类似的东西(新数据类型+类型类+实例),而不仅仅是定义函数。
那么,什么时候应该创建新的数据类型、类型类等,什么时候应该使用函数?
谢谢。