• Re: Exercises, chap. 3, Graham

    From B. Pym@Nobody447095@here-nor-there.org to comp.lang.lisp,comp.lang.scheme on Fri Jul 11 00:42:38 2025
    From Newsgroup: comp.lang.lisp

    Alan Crowe wrote:

    (defun occurrences-CL-condensed (list)
    (sort (loop for x in (remove-duplicates list)
    collect (cons x (count x list)))
    #'> :key #'cdr))

    Gauche Scheme

    (define (occurrences-GS-condensed List)
    (sort
    (map
    (^x (cons x (count (pa$ equal? x) List)))
    (delete-duplicates List))
    > cdr))

    Testing.

    (occurrences-GS-condensed '(a b c d e f b c d e b c d))

    ===>
    ((b . 3) (c . 3) (d . 3) (e . 2) (a . 1) (f . 1))


    Shorter yet.

    (define (occurrences-GS-condensed List)
    (sort
    (map
    (^x (cons x (count (is x) List)))
    (delete-duplicates List))
    > cdr))

    Given:

    (define is
    (case-lambda
    [(x) (lambda(y) (equal? y x))]
    [(pred x) (lambda(y) (pred y x))]
    [(pred key x) (lambda(y) (pred (key y) x))]))
    --- Synchronet 3.21a-Linux NewsLink 1.2