假设我有一个类型类,对于该类型类的每个实例,我都有一个函数
f :: [Bool] -> Maybe (a, [a])
我怎样才能调用f?更准确地说,如果 b 是此类型类中的另一种类型,我如何指定我的意思是来自 a 实例的 f 而不是来自 b 实例的 f?
最佳答案
有时您必须添加类型注释。考虑类型类 Read
:
class Read a where
read :: String -> a
如果你尝试read "1"
期望得到整数1
,你会得到一个错误,因为没有办法知道 a
的类型是什么。是。然而,这有效:read "1" :: Int
.
如果您正在使用您的函数f
在编译器可以找出什么的情况下 a
是,那么它就会工作得很好。否则,您必须通过添加适当的类型注释来帮助编译器。
关于haskell - 如何指定调用函数的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37545204/