• .re: Grouping.

    From Robert L.@21:1/5 to Pascal Bourguignon on Sat Mar 5 05:02:52 2022
    Pascal Bourguignon wrote:

    ;; Smartass solution, using Common Lisp reduce:

    (defun group (list)
    (reduce (lambda (item result)
    (cond
    ((endp result) (list (list item)))
    ((eql (first (first result)) item) (cons (cons item (first result))
    (rest result)))
    (t (cons (list item) result))))
    list
    :from-end t
    :initial-value '()))

    Shorter.

    Gauche Scheme and Racket:

    ;; for Racket only
    (require srfi/1) ;; fold-right

    (define (kons x accum)
    (if (or (null? accum) (not (equal? x (caar accum))))
    (cons (list x) accum)
    (cons (cons x (car accum)) (cdr accum))))

    (define (group lst)
    (fold-right
    kons
    '()
    lst))

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)