
Dear Cafe, I have the following types: type Computer a b = ( a -> IO ( Maybe b ) ) type Transformer a b c d = Computer a ( b, c -> d ) For example, a SAT solver: minisat :: Computer CNF Assignment, and when I use it to solve an application problem via transformation to SAT, I need t :: Transformer Problem SAT Assignment Solution Now - what is the proper abstraction? Is this an arrow somehow? And is there already a type and a library that would contain useful combinators like some of these: http://autolat.imn.htwk-leipzig.de/gitweb/?p=box;a=blob;f=src/exotic/Strateg... Thanks - J.W.

On Fri, Apr 13, 2012 at 7:49 AM, Johannes Waldmann < waldmann@imn.htwk-leipzig.de> wrote:
type Computer a b = ( a -> IO ( Maybe b ) ) type Transformer a b c d = Computer a ( b, c -> d )
Computer looks like Kleisli (MaybeT IO), which would be a valid instance of Arrow.
participants (2)
-
Daniel Peebles
-
Johannes Waldmann