~j-e-m-jackson/scheme-libraries/octorine

« back to all changes in this revision

Viewing changes to monad/stream.sls

  • Committer: James E. Jackson
  • Date: 2009-12-08 03:08:56 UTC
  • Revision ID: james@mandrake-20091208030856-50q3csbiuslk9rz5
Factored monad+ into its own generic

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
#!r6rs
2
2
 
3
3
(library (octorine monad stream)
4
 
  (export monad.stream)
 
4
  (export monad.stream monad+.stream)
5
5
  (import (rnrs) (octorine monad) (octorine generics) (srfi srfi-41))
6
6
 
7
7
(define monad.stream 
8
8
  (generic-instance monad
9
9
     (lambda (ls fn) ; bind :stream (thing->stream) -> stream) 
10
10
       (stream-concat (stream-map fn ls)))
11
 
     (lambda (x) (stream x)); return : thing->stream
12
 
     (lambda () (stream))))
13
 
 
 
11
     (lambda (x) (stream x)))); return : thing->stream
 
12
 
 
13
 
 
14
(define monad+.stream (generic-instance monad+ (lambda () stream-null) stream-append))
14
15
)
 
 
b'\\ No newline at end of file'