And thus, the type of stream-map is NOT stream-map : (a -> b) (stream a) -> (stream b)
but stream-map : (a b c ... -> d e f ...) (stream a b c ...) -> (stream d e f ...) Jay On Sun, Jul 8, 2012 at 8:00 AM, Robby Findler <ro...@eecs.northwestern.edu> wrote: > I'm not sure about the rationale behind the design of stream-map, but > "any" as a result contract for a function indicates it may return > multiple values (in the range of a function "any" is a special > keyword). "any/c" is a contract for a single value. > > Robby > > On Sun, Jul 8, 2012 at 6:25 AM, Daniel King <dank...@ccs.neu.edu> wrote: >> Question 0: >> >> In collects/racket/stream.rkt, `stream-map' is defined as: >> >> (define (stream-map f s) >> (unless (procedure? f) (raise-argument-error 'stream-map "procedure?" f)) >> (unless (stream? s) (raise-argument-error 'stream-map "stream?" s)) >> (let loop ([s s]) >> (cond >> [(stream-empty? s) empty-stream] >> [else (stream-cons (call-with-values (lambda () (stream-first s)) f) >> (loop (stream-rest s)))]))) >> >> >> I don't understand the difference between: >> >> (call-with-values (lambda () (stream-first s)) f) >> >> and >> >> (f (stream-first s)) >> >> because the contract for `stream-first' is: >> >> (stream-first s) → any >> s : (and/c stream? (not/c stream-empty?)) >> >> Which seems to me to just return a single value. I was taking a second look >> at >> my changes to `stream-map' which add support for multiple streams. I noticed >> this unusual snippet as I rebased onto the latest version of plt/master. >> >> >> Question 1: >> >> Would it make more sense to simply update all the sequence procedures to >> handle >> multiple sequences? Is there a circumstance where it doesn't make sense to >> handle multiple sequences in a sequence procedure such as `sequence-map'? >> >> I figure that the sequence procedures don't support multiple sequences is >> just >> lack of interest. Do most people just use the `for' macros in these cases? >> >> -- >> Dan King >> College of Computer and Information Science >> Northeastern University >> >> _________________________ >> Racket Developers list: >> http://lists.racket-lang.org/dev > > _________________________ > Racket Developers list: > http://lists.racket-lang.org/dev -- Jay McCarthy <j...@cs.byu.edu> Assistant Professor / Brigham Young University http://faculty.cs.byu.edu/~jay "The glory of God is Intelligence" - D&C 93 _________________________ Racket Developers list: http://lists.racket-lang.org/dev