繁体   English   中英

在球拍中使用文件夹进行列表操作

[英]List manipulation with foldr in Racket

#lang racket

我需要从2个列表中创建一个列表

list1 => '(1 2 3)
list2 => '(a b c)

的预期结果

(define (create-list l1 l2)
...
)

成为'((1 a) (2 b) (3 c))

必须使用文件foldr并且不能使用递归。

我当时正在考虑运行一个计数器并使用list-ref,有没有更好的方法?

在Racket中,文件foldr高阶过程可以将多个列表作为参数,您只需要制作一个lambda即可根据需要处理它们:

(define (create-list l1 l2)
  (foldr (lambda (e1 e2 acc)
           (cons (list e1 e2) acc))
         '() l1 l2))

例如:

(create-list '(1 2 3) '(a b c))
=> '((1 a) (2 b) (3 c))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM