Dr Racket - 帮助创建一个向列表添加新元素的函数

时间:2014-05-07 18:43:09

标签: list recursion racket

我需要帮助创建一个将新球添加到现有列表的函数。

Function AddBalls    
AddBalls ListOfBalls -> ListOfBalls  
This function adds one new ball to a list of balls 

(define (AddBall List)
  (...))

(define (AddBall L)
 (cond
 [(empty? L) empty]
 [(cons? L)
  (cons (first L)(AddBall(rest L))])) 

1 个答案:

答案 0 :(得分:0)

所以我不知道Racket中的球是什么,但你可以很容易地将任何元素添加到列表中。所以基本上最容易添加到前面:

(define my-list '(2 3 4))
(define my-new-list (cons 1 my-list))

执行此操作的程序:

(define (add-list e lst)
  (cons e lst))

但请注意,它就像cons一样,参数顺序相同,所以你可以这样做:

(define add-list cons)
(add-list 1 '(2 3 4)) ; ==> (1 2 3 4)

那么如果要添加到列表末尾怎么办?我会用append:

(define (add-last lst el)
  (append lst (list el)))

(add-last '(1 2 3) 4) ; ==> (1 2 3 4)

支持添加到最后的任何提示:

(define (add-last lst . els)
  (append lst els))

(add-last '(1 2 3) 4 5 6 7) ; ==> (1 2 3 4 5 6 7)