计算给定值的多项式

时间:2019-10-31 02:17:19

标签: haskell

嗨,我有一个代数类型Poly a

data Poly a = X

| Coef a

| Sum (Poly a) (Poly a)

| Prod (Poly a) (Poly a)

deriving Show

我想编写一个在给定数字n时将求聚a的函数

polyValue :: Num a => Poly a -> a -> a

polyValue p n =

我很难弄清楚这一点,觉得我实际上并不了解Poly a类型。谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我不确定这是否是家庭作业,因此我将尝试在没有给出确切答案的情况下为您提供指导。您已使用四个构造函数声明了求和类型:XCoef aSum (Poly a) (Poly a)Prod (Poly a) (Poly a)。在函数的左侧,您可以匹配每个构造函数,并定义一个唯一的函数主体,该主体返回与类型签名相同的类型。我将函数主体留空以供您填写。

polyValue :: Num a => Poly a -> a -> a
polyValue X n =
polyValue (Coef a) n =
polyValue (Sum a b) n = -- you can call polyValue on a and b because they are Poly types
polyValue (Prod a b) n = -- you can call polyValue on a and b because they are Poly types