
I read over the first few example and it does not collide with my library. In fact, It could benefit from my library. From both (.) as well as the label construction. Actually I didn't get how they make the labels (getX). type instance Output (a .*. b) label = OOOutput (a .*. b) label type family OOOutput where OOOutput (label .=. out .*. rest) label = out OOOutput (noMatch .*. rest) label = OOOutput rest label instance Action (label .=. out .*. rest) label where (_ .=. action .*. _) . _ = action instance Action (noMatch .*. rest) label where (_ .*. rest) . b = rest . b I didn't compile this since i didn't have their code so there are probably some errors. Also I assumed their .*. are typeOperators even though they don't start with a :. But the idea should be clear. silvio