
ChrisK wrote:
The data dependency is circular.
Yes and no. The input and outputs pairs are dependent on each other, but the integer doesn't depend on the string. Thus, I'm pretty sure that (Int, String) -> (Int, String) can be refactored into Int -> (Int, String -> String) This is related to attribute grammars, I finally found the reference Designing and Implementing Combinator Languages. S. Doaitse Swierstra, Pablo R. Azero Alcocer, João Saraiva http://people.cs.uu.nl/doaitse/Papers/1999/AFP3.pdf I'd even add after to the result of the functions in order to avoid the O(n^2) degenerate case. In any case, I prefer Wadler's combinators. With line being more rigid than Brk , nest and group basically factor the monolithic Blk which makes more laws and available and hence gives a more elegant implementation. Regards, apfelmus