• Re: Functions on generic sequences

    From B. Pym@Nobody447095@here-nor-there.org to comp.lang.lisp on Tue Aug 5 09:47:12 2025
    From Newsgroup: comp.lang.lisp

    B. Pym wrote:

    Kenny Tilton wrote:

    What if the sequence is empty?

    (defun average (sequence)
    (let ((len 0)
    (sum 0))
    (map nil #'(lambda (elt)
    (incf len)
    (incf sum elt))
    sequence)
    (if (zerop len)
    0
    (/ sum len))))

    (defun average (sequence &key (key #'identity) &aux (len 1))
    (/ (reduce (lambda (x y)
    (incf len)
    (+ x y))
    sequence :key key :initial-value 0)
    len))

    Testing:

    * (average '(2 3 4))

    9/4

    Incorrect.


    Gauche Scheme

    (define (average seq)
    (let1 len 0
    (if (null? seq)
    0
    (/ (fold (lambda (x sum) (inc! len) (+ x sum))
    0
    seq)
    len))))

    (defun average (seq)
    (if seq
    (do ((sum 0 (+ sum (pop seq)))
    (i 0 (+ 1 i)))
    ((not seq) (/ sum i)))
    0))

    --- Synchronet 3.21a-Linux NewsLink 1.2