Sorry for the late reply, I was out of home without communication for a
couple days. Indeed, my first impression was that the problem states that
streams are to be constructed with thunks. But as a student it is a very
good thing to try, without forgetting the original form of the exercise,
more than one approach and then compare them (my personal opion though).
>From your post I conclude that you understand the matter well.

Jos

> -----Original Message-----
> From: users-boun...@racket-lang.org 
> [mailto:users-boun...@racket-lang.org] On Behalf Of Patrick Sweetman
> Sent: domingo, 19 de mayo de 2013 21:20
> To: users@racket-lang.org
> Subject: Re: [racket] Problem Stream with alternating values
> 
> On 19/05/2013 21:22, Jos Koot wrote:
> > Your function H1 is not lazy enough.
> > 
> > Closely following the instructions of the exercise I 
> immediately come with:
> > 
> > (define (dan-then-dog)
> >  (cons "dan.jpg"
> >   (lambda () ???)))
> > 
> > Can you fill in the question-marks?
> > 
> > Can easily be done with stream-cons too:
> 
> Right. I was stuck in the 'C' paradigm of passing everything in the
> parameter list, wheras, I think, the stream should only ever 
> be referred
> to as the return value from a function call.
> 
> I like my original approach, using b0 as a state variable, because it
> can be extended to produce a stream of any repeating set of 
> values. The
> more concise double stream-cons is not so general.  Fixing 
> the syntax of
> my original code gives me:-
> 
> (define (dan-then-dog)
>   (define (H1 b0)
>     (cond
>       [(= b0 1) (stream-cons dan (H1 0))]
>       [else     (stream-cons dog (H1 1))]
>       )
>     )
>   (H1 1))
> 
> 
> > 
> > (define dan-then-dog-str (stream-cons "dan.jpg" ...))
> > 
> > but this is not according to the exercise, I think. In the 
> exersize a stream
> > is defined as a thunk.
> 
> I saw that. The requirement for a stream of alternating values was
> clearly stated, but then it confusingly talked about the internal
> structure of a stream.  Surely if the stream is constructed by stream
> primitives then it will all be thunked.  Or do you read the problem as
> requiring that the stream itself be separately thunked?
> 
> Patrick
> 
> > 
> > Jos
> > 
> >> -----Original Message-----
> >> From: users-boun...@racket-lang.org 
> >> [mailto:users-boun...@racket-lang.org] On Behalf Of 
> Patrick Sweetman
> >> Sent: jueves, 16 de mayo de 2013 14:31
> >> To: users@racket-lang.org
> >> Subject: [racket] Problem Stream with alternating values
> >>
> >> I'm doing this problem:
> >>
> >> 6. Write a stream dan-then-dog, where the elements of the stream
> >> alternate between the strings "dan.jpg" and "dog.jpg" 
> (starting with
> >> "dan.jpg"). More specically, dan-then-dog should be a 
> thunk that when
> >> called produces a pair of "dan.jpg" and a thunk that when called
> >> produces a pair of "dog.jpg" and a thunk that when called... 
> >> etc. Sample
> >> solution: 4 lines.
> >>
> >> and I cannot for the life of me understand why the 
> following code does
> >> not produce a properly thunked stream. It evaluates the 
> >> entries until it
> >> runs out of memory
> >>
> >> (define dan "dan.jpg")
> >> (define dog "dog.jpg")
> >>
> >> (define (dan-then-dog)
> >>   (define (H1 st0 b0)
> >>     (cond
> >>       [(= b0 1) (H1 (stream-cons dan st0) 0)]
> >>       [else     (H1 (stream-cons dog st0) 1)]
> >>       )
> >>     )
> >>   (H1 empty-stream 1))
> >>
> >> Can somebody please explain why my understanding of Racket 
> streams is
> >> faulty?
> >>
> >> Thanks,
> >> Patrick Sweetman
> >> ____________________
> >>   Racket Users list:
> >>   http://lists.racket-lang.org/users
> > 
> > 
> 
> ____________________
>   Racket Users list:
>   http://lists.racket-lang.org/users

____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to