Добавление элемента в заголовок alist (ассоциативный список) достаточно просто:
> (cons '(ding . 53) '((foo . 42) (bar . 27)))
((ding . 53) (foo . 42) (bar . 27))
Присоединиться к хвосту алиста немного сложнее. После некоторых экспериментов я произвел это:
> (define (alist-append alist pair) `(,@alist ,pair))
> (alist-append '((foo . 42) (bar . 27)) '(ding . 53))
'((foo . 42) (bar . 27) (ding . 53))
Однако мне кажется, что это не идиоматическое решение. Так как это обычно делается в схеме? Или это на самом деле так?