I was hoping to use Haskell's laziness to implement some of the stuff from
"Continuation and Transducer Composition"
(http://www-static.cc.gatech.edu/~shivers/papers/fcoro.pdf)  a bit more 
elegantly, without
manually coding the coroutine logic in continuation-passing style. 
Unfortunately, I'm
beginning to think there is no workaround. Here's the challenge in a simplified 
form:

 

   newtype Source x = Source (x, Source x)
   newtype Sink x = Sink (x -> Sink x)

   type SourceTransducer x y = Source x -> Source y
   type SinkTransducer x y = Sink y -> Sink x

   sourceToSinkTransducer :: SourceTransducer x y -> SinkTransducer x y

 

 I can't find any way to implement the sourceToSinkTransducer function and its 
inverse.
This is disappointing, because SourceTransducer and SinkTransducer are obviously
isomorphic and there are languages like Oz that can accomplish this. Tell me 
I'm missing
something obvious?


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to