Re: the FMITE processor

Liste des GroupesRevenir à cl forth 
Sujet : Re: the FMITE processor
De : Nobody447095 (at) *nospam* here-nor-there.org (B. Pym)
Groupes : comp.lang.forth
Date : 22. Jul 2024, 14:40:07
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v7lnfg$lsag$1@dont-email.me>
References : 1
User-Agent : XanaNews/1.18.1.6
B. Pym wrote:

hughag...@gmail.com wrote:
 
There is no good reason to execute a lambda function after the
parent function has gone out of scope.
 
The original poster was so ignorant that he knew nothing
whatsoever about Usenet; in fact, he may not have known that
he was posting to Usenet.  Consequently, each paragraph in
his post was one gigantic line.  I broke his line for him.
 
In this and other posts he has provided evidence that he
is ignorant about higher-level languages and higher-level
programming concepts.  In fact, he has shown that he finds
high-level concepts difficult or impossible to grasp.
 
 
 
(define (make-fib-gen)
  (let ((a 1) (b 1))
    (lambda ()
      (begin0 a
        (set!-values (a b) (values b (+ a b)))))))
 
(define fib0 (make-fib-gen))
(define fib1 (make-fib-gen))
 
(do ((i 5 (- i 1))) ((zero? i))
  (display (fib0)) (display " "))
 
  ===>
1 1 2 3 5
 
(do ((i 6 (- i 1)))
  ((zero? i))
  (display (list (fib0) (fib1)))
  (newline))
 
  ===>
(8 1)
(13 1)
(21 2)
(34 3)
(55 5)
(89 8)
 
 
(define (make-accumulator)
  (let ((accum '()))
    (lambda xs
      (if (null? xs)
        (reverse accum)
        (set! accum (cons (car xs) accum))))))
 
(define odds (make-accumulator))
(define evens (make-accumulator))
(define all (make-accumulator))
 
(do ((i 9 (- i 1)))
  ((zero? i)   (values (all) (odds) (evens)))
  (let ((n (fib1)))
    ((if (odd? n) odds evens) n)
    (all n)))
 
  ===>
(13 21 34 55 89 144 233 377 610)
(13 21 55 89 233 377)
(34 144 610)
 
In Forth?

Gauche Scheme

(use srfi-13) ;; string ops.
(use gauche.generator)

(define (white-space? c) (member c '(#\space #\tab)))

(define (make-token-generator str)
  (let ((str str)
        (start 0)
        (end 0))
    (lambda ()
      (set! start
        (and start end (string-skip str white-space? end)))
      (if start
        (begin
          (set! end (string-index str white-space? start))
          (string-copy str start end))
        (eof-object)))))

(define (split-on-space str)
  (generator->list (make-token-generator str)))

(split-on-space "")
  ===>
()

(split-on-space "  ")
  ===>
()

(split-on-space "foo")
  ===>
("foo")

(split-on-space "  foo  ")
  ===>
("foo")

(split-on-space "  foo  bar ")
  ===>
("foo" "bar")

(split-on-space " 3.14 foo?  [bar] ")
  ===>
("3.14" "foo?" "[bar]")

Date Sujet#  Auteur
10 Jul 24 * Re: the FMITE processor4B. Pym
10 Jul 24 +- Re: the FMITE processor1minforth
22 Jul 24 `* Re: the FMITE processor2B. Pym
22 Jul 24  `- Re: the FMITE processor1minforth

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal