相关疑难解决方法(0)

为类型为* - >*的类型类的实例键入参数约束

假设我有Heap a类型Heap的类型构造函数* -> *.堆上的许多基本操作都要求a类型是Ord类类的实例.

data Heap a = ...

findMin :: Ord a => Heap a -> a
deleteMin :: Ord a => Heap a -> Heap a
Run Code Online (Sandbox Code Playgroud)

我想将Heap类型声明为Foldable类型类的实例,只要a类型参数是Ord类型类的实例(它将很容易表达通过findMindeleteMin函数).

当我们处理需要类型的类型类时,可以很容易地表达这种关系*,例如Show:

instance Show a => Show (Heap a) where
    show h = ...
Run Code Online (Sandbox Code Playgroud)

但是我在申报时遇到了问题Foldable:

instance Foldable Heap where
    -- Ouch, there is no …
Run Code Online (Sandbox Code Playgroud)

haskell typeclass

16
推荐指数
1
解决办法
1485
查看次数

标签 统计

haskell ×1

typeclass ×1