Re: Translating circular Haskell code to lisp

Liste des GroupesRevenir à cl lisp 
Sujet : Re: Translating circular Haskell code to lisp
De : No_spamming (at) *nospam* noWhere_7073.org (B. Pym)
Groupes : comp.lang.lisp
Date : 18. Jun 2024, 06:44:10
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v4r6r9$173na$1@dont-email.me>
User-Agent : XanaNews/1.18.1.6
Pascal Costanza wrote:

I don't need a general purpose transformation, just some guidelines to
follow when I see code like this.
 
General guideline: Look for a solution that uses LOOP. ;)
 
(defun diff3 (list)
   (let ((avg (loop for element in list
                    sum element into sum
                    count t into length
                    finally (return (/ sum length)))))
     (loop for element in list
           collect (- element avg))))

Gauche Scheme

(define (diff3 lst :optional (seen '()) (sum 0) (cnt 0))
  (if (null? lst)
    (let1 avg (/ sum cnt)
      (map (cut - <> avg) (reverse seen)))
    (let1 x (car lst)
      (diff3 (cdr lst) (cons x seen) (+ sum x) (+ cnt 1)))))

(diff3 '(1 2 3 4 5))
  ===>
(-2 -1 0 1 2)

Date Sujet#  Auteur
18 Jun 24 o Re: Translating circular Haskell code to lisp1B. Pym

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal