定义一个函数 replicate ,它给定一个数字列表,返回一个列表,每个数字都复制其值。使用折叠、映射和拍摄
..> 复制 [5,1,3,2,8,1,2]
输出:[5,5,5,5,5,1,3,3,3,2,2,8,8,8,8,8,8,8,8,1,2,2]
我已经使用列表理解和递归解决了这个问题:
replicate2 [] = []
replicate2 (n:nn) = take n(repeat n) ++ replicate2 nn
但是你将如何使用 fold 和 map 来做到这一点?到目前为止我有: 复制 n = map (foldl1 (take n(repeat n)) n) n 这显然是错误的,但我认为我很接近..
所以任何帮助都会很好,谢谢!