【问题标题】:Inserting at arbitrary position in list in Scheme在 Scheme 列表中的任意位置插入
【发布时间】:2015-05-21 08:46:11
【问题描述】:

我有一个清单,例如:(B D F)

我想在列表中的任意位置插入一个元素。例如,如果元素是A,我想在B之前插入它,如果是C,我想在B之后,D之前插入它。

有没有办法在Scheme的列表中任意位置插入元素?

【问题讨论】:

    标签: scheme guile


    【解决方案1】:

    为此实现一个函数很容易:

    (define (insert-at new k lst)
      (cond ((null? lst)
             (list new))
            ((zero? k)
             (cons new lst))
            (else
             (cons (car lst)
                   (insert-at new (sub1 k) (cdr lst))))))
    

    例如:

    (insert-at 'B 1 '(A))
    => '(A B)
    
    (insert-at 'A 0 '(B D F))
    => '(A B D F)
    
    (insert-at 'C 2 '(A B D F))
    => '(A B C D F)
    

    【讨论】:

      猜你喜欢
      • 2011-12-12
      • 2013-12-14
      • 1970-01-01
      • 2017-11-22
      • 1970-01-01
      • 1970-01-01
      • 2012-08-25
      • 1970-01-01
      • 2018-03-13
      相关资源
      最近更新 更多