gpt4 book ai didi

haskell - 如何在不使用复制或重复函数的情况下将元素放入列表中 n 次?

转载 作者:行者123 更新时间:2023-12-02 04:10:38 25 4
gpt4 key购买 nike

我有一个函数代表,它需要一个包含 int 的列表。我现在的任务是将这些数字中的每一个放入单独的列表中,其中的数字为n倍。例如[1,3,5][[1],[3,3,3],[5,5,5,5,5]] 到目前为止我可以将每个 int 放入单独的列表中,但我现在不知道如何在不使用复制或重复的情况下将它们放入列表中 n 次。

这是我到目前为止的代码:

rep [] = []
rep (x1:xs) = [[x1]] ++ (rep xs)

最佳答案

由于这是一项作业/学习练习 - 只是想提供一些提示

将任务分成函数的两部分

  • 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)

关于haskell - 如何在不使用复制或重复函数的情况下将元素放入列表中 n 次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36967680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com