嗨,我有一个代数类型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类型。谢谢您的帮助。
答案 0 :(得分:0)
我不确定这是否是家庭作业,因此我将尝试在没有给出确切答案的情况下为您提供指导。您已使用四个构造函数声明了求和类型:X
,Coef a
,Sum (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