Scheme:将元组/对添加到元组列表的末尾

Scheme:将元组/对添加到元组列表的末尾,scheme,racket,Scheme,Racket,我想在pair/tuple列表的末尾添加一个pair/tuple。我只想给它最后一个号码/优先权 打电话的时候 (添加“奶酪”购物清单) 我想回去: ((“牛奶”1)(“鸡蛋”2)(“奶酪”3)) 但我现在回来了: ((“牛奶”1)(“鸡蛋”2)“奶酪”3) 我是Scheme的初学者,非常感谢您的帮助 (define shopping-list '( ("Milk" 1) ("Eggs" 2))) (define (addItem k lst) ( let ( [ queue-length

我想在pair/tuple列表的末尾添加一个pair/tuple。我只想给它最后一个号码/优先权

打电话的时候

(添加“奶酪”购物清单)

我想回去:

((“牛奶”1)(“鸡蛋”2)(“奶酪”3))

但我现在回来了:

((“牛奶”1)(“鸡蛋”2)“奶酪”3)

我是Scheme的初学者,非常感谢您的帮助

(define shopping-list '( ("Milk" 1) ("Eggs" 2)))

(define (addItem k lst)
  ( let ( [ queue-length (length lst)])
     (append lst (list k (+ queue-length 1)))
     )
  )

(addItem "Cheese" shopping-list)

我想您可能需要
(追加lst(list(list k(+queue length 1)))
(注意对
list
的额外调用)。是的,就是这样。非常感谢。如果要更改列表,需要使用
append(请注意末尾的“砰”一声),这将改变列表的位置,而不是简单地构造一个新的。否则,调用函数时需要始终设置变量的值,如:
(set!shopping list(addItem“Cheese”shopping list))
。请记住,使用
set也意味着对前面列表的任何引用都不会指向变量赋值后的新列表。