• Re: Functions on generic sequences

    From B. Pym@21:1/5 to Kenny Tilton on Sun Jul 13 05:33:44 2025
    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))))

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From B. Pym@21:1/5 to B. Pym on Tue Aug 5 09:47:12 2025
    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))

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