• Re: Exercises, chap. 3, Graham

    From B. Pym@21:1/5 to Alan Crowe on Fri Jul 11 00:42:38 2025
    XPost: comp.lang.scheme

    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))]))

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