concatr ::Integer -> [[Integer]] -> [[Integer]]
concatr x (y) = [x] : y
concatr x (y:ys) = concatr x y: concatr x ys
我已经尝试了很多这样的组合,以至于我的头开始受伤了。我究竟做错了什么?我只想在传入的列表的每个子列表中放入一个整数。
答案 0 :(得分:8)
您可以使用map
功能。
concatr :: Integer -> [[Integer]] -> [[Integer]]
concatr x ys = map (x:) ys
简化为简洁解决方案:
concatr x = map (x:)
答案 1 :(得分:0)
如果您想避免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]
。