相关疑难解决方法(0)

Haskell:实例中的等式约束

我正在阅读ClassyPrelude的公告,并且到了这里:

instance (b ~ c, CanFilterFunc b a) => CanFilter (b -> c) a where
    filter = filterFunc
Run Code Online (Sandbox Code Playgroud)

作者随后提到这不起作用:

instance (CanFilterFunc b a) => CanFilter (c -> c) a where
    filter = filterFunc
Run Code Online (Sandbox Code Playgroud)

这对我来说很有意义,因为c它与左边的约束完全无关.

但是,文章中没有提到的内容和我不理解的是为什么这不起作用:

instance (CanFilterFunc b a) => CanFilter (b -> b) a where
    filter = filterFunc
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么这与第一个提到的定义不同?也许GHC类型推断的一个有效例子会有所帮助吗?

haskell

33
推荐指数
1
解决办法
2174
查看次数

标签 统计

haskell ×1