如何修改Haskell的mulPoly函数将固定Poly类型改为参数化Poly a类型
调整mulPoly函数的实现方案
你只需要按以下逻辑修改mulPoly的代码即可适配新的参数化Poly a类型:
核心修改点
- 给类型声明补充
Num a、Eq a约束,匹配依赖函数addPoly、scale的约束要求 - 适配
Poly a的P构造器做模式匹配,取出内部的系数列表 - 补全空多项式的边界分支,避免运行时匹配错误
- 调整递归时的多项式左移逻辑:先取出递归返回的Poly内部系数列表,拼接0代表升次后重新包装为Poly类型
完整实现代码
mulPoly :: (Num a, Eq a) => Poly a -> Poly a -> Poly a -- 空多项式乘以任意多项式结果为空 mulPoly (P []) _ = P [] mulPoly (P (a:as)) bs = addPoly (scale a bs) shiftedPoly where -- 递归计算高阶项乘积后左移一位(首项补0代表升次) shiftedPoly = let P rest = mulPoly (P as) bs in P (0 : rest)
内容的提问来源于stack exchange,提问作者user17119037
相关产品推荐
相关产品推荐

