Haskell 递归减法函数

Haskell 递归减法函数,haskell,Haskell,我正在尝试做这个函数,它将包含两个参数,Double和Double列表。 所以,我们的想法是从所有的列表值中减去两倍 范例 为了方便起见,我在本例中使用整数 这将打印4 f = do let a = 10 let b = [1,2,3] let c = f2 a b print c 这将使用列表中的第一个值进行减法,但如何完成这一切 f2 0 _ = 0 f2 x [] = x f2 x (y:ys) = x - y 这将与数字1相减,可能只是计算列表的数量

我正在尝试做这个函数,它将包含两个参数,Double和Double列表。 所以,我们的想法是从所有的列表值中减去两倍

范例

为了方便起见,我在本例中使用整数

这将打印4

f = do
  let a = 10
  let b = [1,2,3]
  let c = f2 a b
  print c
这将使用列表中的第一个值进行减法,但如何完成这一切

f2 0 _      = 0
f2 x []     = x
f2 x (y:ys) = x - y
这将与数字1相减,可能只是计算列表的数量

f3 0 _      = 0
f3 x []     = x
f3 x (y:ys) = x - f3 (x-y) ys
我尝试了很多不同的方法来让它工作,但我就是做不好。 我知道有一些简单的方法可以做到这一点


请帮忙

在列表上递归,每次将减法结果作为第一个参数传递:

f2 :: Num a => a -> [a] -> a
f2 x [] = x
f2 x (y:ys) = f2 (x - y) ys
f2 :: Num a => a -> [a] -> a
f2 x ys = x - sum ys