[Haskell-cafe] Re: Stream processors
Ben Rudiak-Gould
br276 at cl.cam.ac.uk
Thu Oct 21 16:17:04 EDT 2004
Peter Simons wrote:
>Note my original definition:
>
> type Buffer = (Ptr Word8, Int)
>
> data StreamProc ctx a
> = SP
> { start :: IO ctx
> , feed :: ctx -> Buffer -> IO ctx
> , commit :: ctx -> IO a
> }
>
>So you would use it like this:
>
> foo :: StreamProc ctx a -> IO a
> foo sp = do
> ctx <- start sp
> (ptr,n) <- "read buffer"
> ctx' <- feed sp ctx (ptr,n)
> ...
> commit sp ctx'
Sorry, my mistake. I was thinking of StreamProc as a type class.
What I meant was this:
bar :: StreamProc ctx a -> IO (a,a)
bar sp = do
ctx <- start sp
(ptr1,n1) <- ...
(ptr2,n2) <- ...
ctx1 <- feed sp ctx (ptr1,n1)
ctx2 <- feed sp ctx (ptr2,n2)
val1 <- commit sp ctx1
val2 <- commit sp ctx2
return (val1,val2)
My point is just that bar typechecks and therefore must do something
at runtime; what does it do? This is a genuine question -- I'm hoping
the answer will help me understand what you're trying to do here.
-- Ben
More information about the Haskell-Cafe
mailing list