我刚刚开始使用 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!",...