Re: simple loop question

Liste des GroupesRevenir à cl scheme 
Sujet : Re: simple loop question
De : Nobody447095 (at) *nospam* here-nor-there.org (B. Pym)
Groupes : comp.lang.lisp comp.lang.scheme
Date : 04. Sep 2024, 02:47:21
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vb8aml$3hjes$1@dont-email.me>
References : 1
User-Agent : XanaNews/1.18.1.6
B. Pym wrote:

Lars Brinkhoff wrote:
 
use LOOP to collect random integers into a list until the sum of that
list exceeds a constant (say 50).
 
(loop for x = (random 10) collect x sum x into y until (> y 50))
 
Gauche Scheme
 
(let1 y 0 (collect-till x (random 10) (> (inc! y x) 50)))
  ===>
(7 9 4 0 6 4 1 3 2 7 0 7 0 1)
 
 
Given:
 
(use srfi-27) ;; random-integer
 
(define random random-integer)
 
(define-syntax collect-till
  (syntax-rules ()
    [(collect-till v expr0 expr1)
     (let ((res '()))
       (let go ((v expr0))
         (set! res (cons v res))
         (if expr1 (reverse res) (go expr0))))]))
 
(collect-till x (random 10) (even? x))
  ===>
(7 1 6)


Revision:

(collect-till (x (y 0)) (random 10) x (> (inc! y x) 50))

Given:

(define-syntax collect-till
  (syntax-rules ()
    [(collect-till (v (w x) ...) v-val collect test)
     (let ((res '()) (w x) ...)
       (let go ((v v-val))
         (set! res (cons collect res))
         (if test (reverse res) (go v-val))))]
    [(collect-till v v-val collect test)
     (collect-till (v) v-val collect test)]))



Date Sujet#  Auteur
3 Sep 24 * Re: simple loop question2B. Pym
4 Sep 24 `- Re: simple loop question1B. Pym

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal