haskell - 如何指定调用函数的实例

标签 haskell

假设我有一个类型类,对于该类型类的每个实例,我都有一个函数

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/

相关文章:

haskell - 为什么 mod 在表达式中给出与在函数调用中不同的结果?

haskell - Yesod ExitFailure 1 安装脚手架应用程序时

haskell - 如何解释编译器消息 'Couldn' t 匹配类型 : [b0] with: [a2] -> t :'?

haskell - 结合 StateT 和 State monad

arrays - Haskell 数据结构上的常量传播?

haskell - 解析 IPv6 地址

haskell - 函数组合 (.) 如何从内部工作?

haskell - 如何使用 concatMap 将列表理解转换为版本?

windows - 如何防止控制台窗口在 ghc 应用程序中关闭?

haskell - FP 中模式匹配相对于条件的优势是什么(通俗地说)?