concatr ::Integer -> [[Integer]] -> [[Integer]]
concatr x (y) = [x] : y
concatr x (y:ys) = concatr x y: concatr x ys
我已经尝试了很多这样的组合,以至于我的头开始受伤。我到底做错了什么?我只想在传入的列表的每个子列表中放入一个整数。
concatr ::Integer -> [[Integer]] -> [[Integer]]
concatr x (y) = [x] : y
concatr x (y:ys) = concatr x y: concatr x ys
我已经尝试了很多这样的组合,以至于我的头开始受伤。我到底做错了什么?我只想在传入的列表的每个子列表中放入一个整数。
您可以使用该map
功能。
concatr :: Integer -> [[Integer]] -> [[Integer]]
concatr x ys = map (x:) ys
Eta reduce 的简洁解决方案:
concatr x = map (x:)
如果你想避免map
:
concatr :: Integer -> [[Integer]] -> [[Integer]]
concatr x [] = []
concatr x (y:ys) = (x:y):concatr x ys
两种情况:
y:ys
,则新的头是x:y
,我们递归调用concatr
剩余部分。示例:concatr 1 [[0],[2]]
是[[1,0],[1,2]
.