我有一个函数代表,需要一个int
的列表。我现在的任务是将这些数字中的每一个放在单独的列表中,其数量是n倍。例如
[1,3,5]
到[[1],[3,3,3],[5,5,5,5,5]]
到目前为止,我可以将每个int放在一个单独的列表中,但我现在还不知道如何在列表中放置n次而不使用复制或重复。
这是我到目前为止的代码:
rep [] = []
rep (x1:xs) = [[x1]] ++ (rep xs)
答案 0 :(得分:2)
由于这是一项家庭作业/学习练习 - 只想提供一些提示
将任务分为两部分
myReplicate :: Int -> a -> [a]
复制单个元素的次数与Int
告诉的次数相同。
myReplicate n x | n > 0 = ...
| n == 0 = ...
| n < 0 = error "Error myReplicate: no negative arguments allowed"
第二个函数myMap :: (a -> b) -> [a] -> [b]
,它将函数应用于给定列表的每个元素。
myMap :: (a -> b) -> [a] -> [b]
myMap f [] = []
myMap f (x:xs) = ...
然后rep = myMap (\x -> myReplicate x x)
答案 1 :(得分:0)
这是一个没有$mail->AddAddress($email, "John Doe");
或repeat
的解决方案:
replicate