Re: Loopy

Liste des GroupesRevenir à cl lisp 
Sujet : Re: Loopy
De : No_spamming (at) *nospam* noWhere_7073.org (B. Pym)
Groupes : comp.lang.lisp
Date : 13. Jun 2024, 05:13:11
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v4do46$22q3g$1@dont-email.me>
References : 1 2
User-Agent : XanaNews/1.18.1.6
On 6/10/2024, B. Pym wrote:

Peter Seibel wrote:
 
 >   (loop for x across array-of-numbers
 >         minimizing x into min
 >         maximizing x into max
 >         summing x into total
 >         counting t into count
 >         finally (return (list min max (/ total count))))
 
 
In Gauche Scheme, it's a one-liner.
 
(use gauche.sequence)
 
(define v #(0 2 -3 99 48 35 86 27 50 18))
(define count (vector-length v))
 
 
`(,(find-min v) ,(find-max v) ,(/ (fold + 0 v) count))
  ===>
(-3 99 181/5)

Another way.

(define v #(0 2 -3 99 48 35 86 27 50 18))
(define count (vector-length v))

(let ((r (mul-vec-reduce (list + max min) v)))
  (reverse (cons (/ (pop! r) count) r)))

  ===>
(-3 99 181/5)

Given:

(use srfi-43) ;; vector-fold

(define (mul-vec-reduce konses vec)
  (let ((len (length konses)))
    (vector-fold
      (lambda (i accum x)
        (if (null? accum)
          (make-list len x)
          (map
            (lambda (f a b) (f a b))
            konses
            (make-list len x)
            accum)))
      '()
      vec)))

Date Sujet#  Auteur
9 Jun 24 * Loopy5B. Pym
9 Jun 24 +- Re: Loopy1B. Pym
10 Jun 24 `* Re: Loopy3B. Pym
10 Jun 24  +- Re: Loopy1B. Pym
13 Jun 24  `- Re: Loopy1B. Pym

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal