【发布时间】:2025-12-23 06:45:11
【问题描述】:
我刚刚开始使用 Haskell。我正在尝试创建一个模仿 Haskell 中的标准 replicate 函数的函数,但使用递归。例如,
Prelude> replicate 3 "Ha!"
["Ha!","Ha!","Ha!"]
它的类型应该是Int -> a -> [a]。到目前为止,我有:
myReplicate :: Int -> a -> [a]
myReplicate x y = y : myReplicate (x-1) y
myReplicate 0 y = [ ]
但是,我的函数总是生成无限列表:
Prelude> myReplicate 3 "Ha!"
["Ha!","Ha!","Ha!","Ha!","Ha!","Ha!","Ha!",...
【问题讨论】:
-
“不起作用”是什么意思?当你运行这个函数时会发生什么?
标签: haskell recursion replicate