就评价而言,这两者有什么区别?
为什么这“服从”(怎么说?)非严格性
recFilter :: (a -> Bool) -> [a] -> [a]
recFilter _ [] = []
recFilter p (h:tl) = if (p h)
then h : recFilter p tl
else recFilter p tl
虽然这没有?
recFilter :: (a -> Bool) -> [a] -> Int -> [a]
recFilter _ xs 0 = xs
recFilter p (h:tl) len
| p(h) = recFilter p (tl ++ [h]) (len-1)
| otherwise = recFilter p tl (len-1)
是否可以非严格地编写尾递归函数?
老实说,我也不了解第一个示例的调用堆栈,因为我看不到它的h:
去向。有没有办法在 ghci 中看到这个?