gpt4 book ai didi

haskell - 在 Haskell 中求解方程

转载 作者:行者123 更新时间:2023-12-04 22:24:21 26 4
gpt4 key购买 nike

我必须做一个练习,我很迷茫……我需要用多项式为 Ord 做一个实例。这是我的尝试:

data Pol = P [(Float,Int)] deriving Show

instance Ord Pol where
(Pol a) > (Pol b) = (maxGrado a) > (maxGrado b) || ((maxGrado a) == (maxGrado b) && (maxCoe a) > (maxCoe b))
(Pol a) < (Pol b) = (maxGrado a) < (maxGrado b) || ((maxGrado a) == (maxGrado b) && (maxCoe a) < (maxCoe b))

maxGrado :: [(Float,Int)] -> Int
maxGrado [] = 0
maxGrado ((c,g):xs) = g

maxCoe :: [(Float,Int)] -> Int
maxCoe [] = 0
maxcoe ((c,g):xs) = c

- 错误:
ERROR file:.\Febrero 2011.hs:32 - Undefined data constructor "Pol"

该错误非常愚蠢,但试图解决它花了一个小时......有人可以帮助我吗?

谢谢!!

最佳答案

data Pol = P [(Int, Int)]

在这个声明中, Pol 是类型构造函数, P 是这个数据类型的唯一数据构造函数。一般来说,一个数据类型可以有多个数据构造函数,这就是我们有这种区别的原因。

一个简单的规则是,你应该在谈论类型时使用类型构造函数,而在谈论值时使用数据构造函数。

在这种情况下,您应该在实例头中使用 Pol,但在函数的模式中使用 P
instance Ord Pol where
(P a) > (P b) = ...
(P a) < (P b) = ...

另请注意,类型构造函数和数据构造函数位于不同的命名空间中,并且永远不会在相同的上下文中使用。这意味着它们可以具有相同的名称。
data Pol = Pol [(Int, Int)]

这也行。

关于haskell - 在 Haskell 中求解方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7234417/

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