Deutsch English Français Italiano |
<vbk67q$1u3dp$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!weretis.net!feeder8.news.weretis.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: "B. Pym" <Nobody447095@here-nor-there.org> Newsgroups: comp.lang.lisp,comp.lang.scheme Subject: Re: MAP (and variants) vs LOOP - Popular opinion observation? Date: Sun, 8 Sep 2024 12:44:44 -0000 (UTC) Organization: A noiseless patient Spider Lines: 63 Message-ID: <vbk67q$1u3dp$1@dont-email.me> References: <vbk3vn$1tpt1$1@dont-email.me> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Injection-Date: Sun, 08 Sep 2024 14:44:45 +0200 (CEST) Injection-Info: dont-email.me; posting-host="ca987dadbaef2aac0a61f448ffc30def"; logging-data="2035129"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19fO3U43fvFnvgbXsQBlomE" User-Agent: XanaNews/1.18.1.6 Cancel-Lock: sha1:mOAWIdA+dawrGSrTbkrmb/8l0y0= Bytes: 2319 B. Pym wrote: > > Then suppose you later need the loop/map to collect some of the values > > under certain conditions. You might have > > > > (loop for x in (get-list) > > for i from 0 > > do (format t "~A - ~A~%" i x) > > if (test x) > > collect (foo x)) > > Gauche Scheme > > (use srfi-13) ;; string-upcase > > (filter-map > (lambda (x i) (print i " - " x) > (and (string? x) (string-upcase x))) > '(foo "an" 8 "why") > (lrange 0)) > > 0 - foo > 1 - an > 2 - 8 > 3 - why > ("AN" "WHY") > Suppose you have > > (loop for x in (get-list) > do (format t "~A~%" x)) > > and then it turns out you need to print a numeric index. You can do > > (loop for x in (get-list) > for i from 0 > do (format t "~A - ~A~%" i x)) > > If you start with > > (mapc (lambda (x) (format t "~A~%" x)) (get-list)) > > it seems (to me) that it'd be harder to modify it as needed, > > (let ((list (get-list))) > (mapc (lambda (i x) (format t "~A - ~A" i x)) > (range 0 (length list)) > list)) > > (I'm assuming the toolkit includes a RANGE utility, or something similar.) Gauche Scheme Shorter than the loop: (for-each (pa$ format #t "~a - ~a\n") (lrange 0) '(a b c)) 0 - a 1 - b 2 - c