Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Post some fucking scheme

Name: Anonymous 2010-06-18 19:34


(define (print-interactive stream)
  (if (stream-null? stream)
      (begin (display "End")
             (newline))
      (begin
        (display (stream-car stream))
        (newline)
        (if (equal? (read) 'n)
            (print-interactive (stream-cdr stream))
            #f))))

(define (stream-append stream1 stream2)
  (if (stream-null? stream1)
      stream2
      (cons
       (stream-car stream1)
       (lambda ()
         (stream-append (stream-cdr stream1) stream2)))))

(define (singleton-stream value)
  (cons value
        (lambda ()
          '())))

(define (stream-repeat obj n)
  (cons obj
        (lambda ()
          (define (inner x)
            (if (= x n)
                '()
                (cons
                 obj
                 (lambda ()
                   (inner (+ 1 x))))))
          (inner 0))))

(define (flatten-stream stream)
  (cond ((stream-null? stream)
         the-empty-stream)
        ((null? (stream-car stream))
         (flatten-stream
          (stream-cdr stream)))
        ((list? (stream-car stream))
         (cons (car (stream-car stream))
               (lambda ()
                 (flatten-stream
                  (cons
                   (cdr (stream-car stream))
                   (lambda ()
                     (stream-cdr stream)))))))
        (else
         (cons (stream-car stream)
               (lambda ()
                 (flatten-stream (stream-cdr stream)))))))


(define (stream-flatmap proc stream)
  (flatten-stream (stream-map proc stream)))

Name: Anonymous 2010-06-19 2:36

fuck yeah scheme.

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List