Implementing take using foldr
问题 This is my take version using foldr : myTake n list = foldr step [] list where step x y | (length y) < n = x : y | otherwise = y main = do print $ myTake 2 [1,2,3,4] The output is not what I expect: [3,4] I then tried to debug by inserting the length of y into itself and the result was: [3,2,1,0] I don't understand why the lengths are inserted in decreasing order. Perhaps something obvious I missed? 回答1: If you want to implement take using foldr you need to simulate traversing the list from