On Nov 18, 2008, at 6:53 PM, Brandon S. Allbery KF8NH wrote:
On 2008 Nov 18, at 21:23, Warren Harris wrote:
However, each of the clauses is actually an output routine to send
the expression that it denotes to a remote server, and a parser for
receiving the results. Since a clause is really a pair of
operations, it doesn't seem possible to formulate a monad that will
compose all the output routines together and compose all the input
routines together in one shot. (Note that the variables in the
above code (v1, v2) represent inputs to be received from the remote
server -- all outputs are packaged into the clause expressions
themselves and are effectively literals.)
Have you considered using arrows instead?
I'm not that familiar with arrows, but have just looked at some papers
by Hughes and Paterson. It appears that unlike monads, the right-hand
side of the arrow operator is not a function, and as such could be
used to define a pairwise stream sequencing operator for my particular
case. Are there any specific references that show something like this,
e.g. for implementing network protocols? (I'm still trying to get my
head around the basics of arrows.) Thanks,
Warren
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe