在 Racket 中使用 foldr 进行列表操作
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))
#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))