基本haskell:列表理解复制元素n次

Ale*_*lex 2 haskell

我正在尝试使用列表推导来实现一个函数,它按指定的次数复制一个元素.我真的坚持这个但我正在努力

例如

copy 2 'a' = aa
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止:

copy2 :: Int->a->[a]
copy2 x y = func1 y [b|b<-[1..x]]
Run Code Online (Sandbox Code Playgroud)

其中func1以某种方式将y映射到x的每个元素

这不是很多,但我真的对这个对不起的家伙一无所知.

Sar*_*rah 7

尽管答案已经被接受,但我想指出你在你的问题中说了一些非常重要的东西,这可能会让你得到一个答案.

你说:

copy2 :: Int->a->[a]
copy2 x y = func1 y [b|b<-[1..x]]
Run Code Online (Sandbox Code Playgroud)

其中func1以某种方式将y映射到x的每个元素

如果我们稍微清理一下短语 - 我确信这就是你的意思 - 我们实际上想要map通过对const蚂蚁价值的理解产生列表的每个元素y.

好吧,创建一个为单个x生成值y的函数很简单:

const y x = y
Run Code Online (Sandbox Code Playgroud)

事实上,该功能非常有用,已经存在于Prelude中!

现在我们只需要map遍历列表中的每个元素.

copy2 x y = map (const y) [b | b <- [1..x]]
Run Code Online (Sandbox Code Playgroud)

或者有点简化,真正展示我们与原始描述有多接近,(尽管我知道你需要列表理解)

copy2 x y = map (\x -> y) [1..x]
Run Code Online (Sandbox Code Playgroud)

"将每个x的x映射到y."

所以你看,你一直都有.