我刚刚开始使用Haskell。我试图创建一个函数,模仿Haskell中的标准replicate
函数,但使用递归。例如,Haskell:递归重复函数
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!",...
你是什么意思“不起作用”?当你运行这个功能会发生什么? –