Re: doubling list elements at every level using recursion

Liste des GroupesRevenir à cl lisp 
Sujet : Re: doubling list elements at every level using recursion
De : Nobody447095 (at) *nospam* here-nor-there.org (B. Pym)
Groupes : comp.lang.lisp
Date : 17. Jul 2024, 17:32:54
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v78o75$1t49j$1@dont-email.me>
User-Agent : XanaNews/1.18.1.6
Pascal J. Bourguignon wrote:

You could slightly generalize double, and accept any atoms. This would
allow you to simplify it.
 
You could also use emacs and let it do the indentation for you!
 
(defun double (object)
  (typecase object
    (cons    (cons (double (car object)) (double (cdr object))))
    (number  (* 2 object))
    (t       object)))
 
(mapcar (function double)
        '( ()  abc  123  (1 2.0 #C(3 4) a b c (5/2 6 d e f) 7 8 9) ))
--> (NIL ABC 246 (2 4.0 #C(6 8) A B C (5 12 D E F) 14 16 18))


Why not simply

(double '(() abc 123 (1 2.0 #C(3 4) a b c (5/2 6 d e f) 7 8 9)))
  ===>
(NIL ABC 246 (2 4.0 #C(6 8) A B C (5 12 D E F) 14 16 18))


Scheme

(define (double obj)
  (cond ((pair? obj) `(,(double (car obj)) ,@(double (cdr obj))))
        ((number? obj) (* 2 obj))
        (#t obj)))

(double 3)
  ===>
6

(double '(() abc 123 (1 2.0 (3 4) a b c (5/2 6 d e f) 7 8 9)))
  ===>
(() abc 246 (2 4.0 (6 8) a b c (5 12 d e f) 14 16 18))


Date Sujet#  Auteur
17 Jul 24 o Re: doubling list elements at every level using recursion1B. Pym

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal