Forums before death by AOL, social media and spammers... "We can't have nice things"
|    comp.lang.forth    |    Forth programmers eat a lot of Bratwurst    |    117,927 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 116,647 of 117,927    |
|    B. Pym to B. Pym    |
|    Re: the FMITE processor    |
|    22 Jul 24 13:40:07    |
   
   From: Nobody447095@here-nor-there.org   
      
   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]")   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca