如果我想在MIT Scheme中反转一个列表,我可以这样做(fold cons '() list),如果列表是(define lis '(1 2 3 4)),则(fold cons '() lis)给出(4 3 2 1).有两种折叠,左右折叠,但如果我使用(fold-right cons '() lis),我会(1 2 3 4)这样,普通折叠不能是那个.此外,如果我使用(fold-left cons '() lis)我得到((((() . 1) . 2) . 3) . 4)这样也不能在原始例子中折叠.反转清单需要什么样的折叠?
我问,因为我希望能够制作一个通用折叠,以便:
(define ls '((1 2 3) (4 5 6)))
(gen-fold cons '() ls)
=> ((6 5 4) (3 2 1))
(define l2 '(((1 2) (2 3)) ((3 4) (4 5))))
(gen-fold …Run Code Online (Sandbox Code Playgroud)