代码之家  ›  专栏  ›  技术社区  ›  troelskn

如何在Scheme中附加到alist?

  •  5
  • troelskn  · 技术社区  · 16 年前

    向alist(关联列表)的头部添加元素非常简单:

    > (cons '(ding . 53) '((foo . 42) (bar . 27)))
    ((ding . 53) (foo . 42) (bar . 27))
    

    不过,在alist的尾部加上附加物有点棘手。经过一些试验,我制作了这个:

    > (define (alist-append alist pair) `(,@alist ,pair))
    > (alist-append '((foo . 42) (bar . 27)) '(ding . 53))
    '((foo . 42) (bar . 27) (ding . 53))
    

    然而,在我看来,这不是惯用的解决方案。那么这通常是如何在计划中完成的呢?还是事实上是这样?

    2 回复  |  直到 16 年前
        1
  •  4
  •   John R Strohm    16 年前

        2
  •  8
  •   Matthias Benkard    16 年前

    ACONS

    (acons key value alist)
    

    (cons (cons key value) alist)