gpt4 book ai didi

haskell - 无法证明 Haskell 中显式类型绑定(bind)错误中的约束

转载 作者:行者123 更新时间:2023-12-01 11:22:37 25 4
gpt4 key购买 nike

quadraticRoots :: Floating t => t -> t -> t -> (t, t)
quadraticRoots a b c = if d < 0 then error "0" else (x, y)
where
x = e + sqrt d / (2 * a)
y = e - sqrt d / (2 * a)
d = b * b - 4 * a * c
e = - b / (2 * a)

上面的代码在 Hugs 中给出了以下错误:

Cannot justify constraints in explicitly typed binding
*** Expression : quadraticRoots
*** Type : Floating a => a -> a -> a -> (a,a)
*** Given context : Floating a
*** Constraints : Ord a

谁能帮我解释一下?

最佳答案

为了进行类似d < 0的比较, 你正在比较的东西必须是 Ord 的成员类型类。因此,我们需要修改我们的类型签名以包含附加约束 Ord :

quadraticRoots :: (Ord t, Floating t) => t -> t -> t -> (t, t)

关于haskell - 无法证明 Haskell 中显式类型绑定(bind)错误中的约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40455963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com