我刚开始学习 Racket 。
我有这个代码:
#lang racket
(define l1 '(1 2 3 4))
(car l1)
(cdr l1)
(car l1)
返回 1。
(cdr l1)
返回 '(2 3 4)
有没有返回'(1 2 3)
的函数?
我已经试过了:
#lang racket
(define l1 '(1 2 3 4))
(map
(lambda (l i)
(if (not (= i (sub1 (length l1)))) l '()))
l1 (range 0 (length l1)))
但是,它返回:'(1 2 3 ())
我也试过:
#lang racket
(define l1 '(1 2 3 4))
(map
(lambda (l i)
(cond ((not (= i (sub1 (length l1)))) l )))
l1 (range 0 (length l1)))
但是,它返回:'(1 2 3 #<void>)
最佳答案
map
函数总是返回一个与其输入长度相同的列表。您想要一个比输入短的输出列表。您要查找的函数传统上称为 but-last
:
(define (but-last xs) (reverse (cdr (reverse xs))))
关于list - 返回没有最后一个元素的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54887007/