如何使用折叠权限在Scheme中映射两个列表?

时间:2016-03-20 23:50:49

标签: scheme racket

我正在寻找一种仅使用foldr

映射两个不同列表项的方法
(map-Using-FoldR '( 1 2 3 4) '( w x y z))

应该返回

'((1 w) (2 x) (3 y) (4 z))

或换句话说 - 使用foldr的“map”命令实现 可能吗? 谢谢!

1 个答案:

答案 0 :(得分:5)

基本上,您希望根据zip实施foldr程序:

(define (zip lst1 lst2)
  (foldr (lambda (e1 e2 acc) (cons (list e1 e2) acc))
         '()
         lst1
         lst2))

例如:

(zip '(1 2 3 4) '(w x y z))
=> '((1 w) (2 x) (3 y) (4 z))