I see that mentioning the rewrite rules was a distraction; 
my main thought,  though, was that there was reason to 
prefer a definition like 

     map f = for cat (yield . f)

to

     map f = forever (await >>= yield . f) 

I was expecting too much from the shape   

     (p >-> for cat f)

But is the wisdom, then, just that when we have our
hands on an actual pipe we should prefer

     for p (yield f)

to 

     p >-> forever (await >>= yield . f) 

?  

Is the advantage of all these {-#RULES#-} which
just restate the (recursive) definitions, just that
there will in the end be a deeper degree of 
specialization, or division of cases? I take
it the reason the compiler doesn't do this 
itself is that there is obviously no end to it. Is it
that from the point of view of the pipes library there
isn't any additional amount of it that's not good,
so to speak?

-- 
You received this message because you are subscribed to the Google Groups 
"Haskell Pipes" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].

Reply via email to