List 通过将对象与[1..n]相乘来创建列表

List 通过将对象与[1..n]相乘来创建列表,list,haskell,List,Haskell,我仍然不喜欢Haskell,需要以下函数的提示 我想通过添加一对的每个乘法来创建一个列表: all :: Int -> (Int,Int) -> [(Int, Int)] all n, pair = ... 例如,n=3,对(1,2)=>[(1,2)、(2,4)、(3,6)] 扩展到[(1*(1,2)),((2*(1,2)),(3*(1,2))] 我知道它与x有关,您需要分别对元组中的元素进行乘法,然后重新创建元组。您可以使用fst和snd来获取元素 all n pair = [

我仍然不喜欢Haskell,需要以下函数的提示

我想通过添加一对的每个乘法来创建一个列表:

all :: Int -> (Int,Int) -> [(Int, Int)] 
all n, pair = ...
例如,n=3,对(1,2)=>[(1,2)、(2,4)、(3,6)] 扩展到[(1*(1,2)),((2*(1,2)),(3*(1,2))]


我知道它与
x有关,您需要分别对元组中的元素进行乘法,然后重新创建元组。您可以使用
fst
snd
来获取元素

all n pair = [(x*(fst pair), x*(snd pair)) | x <- [1..n]]

all n pair=[(x*(fst pair),x*(snd pair))| x是的,这是我需要的提示!我正在查看地图和资料:D
all n pair=…
是一个更好的起点,然后也许你可以使用
map f[1..n]
使用适当的
f
。出于好奇,还有其他方法可以映射到元组:@Lorenzo这是真的,谢谢你指出。
额外软件包中的两个
似乎都可以做到。但我认为初学者自己解决这个问题是一个很好的做法。它更好(依我看,但几乎每个Haskell开发人员都会同意)在配对上进行模式匹配,而不是使用
fst
snd
all n (a, b) = [(x*a, x*b) | x <- [1..n]]