It was cool to read about "co-choice", although I looked up that term and couldn't really find it used anywhere, do you have a source? (Also I think there is a typo in the type signature in the code block in this section. The codomain of `cochoiceHask` should be `b` right?) The idea of building a loop from a function `Either a c -> Either b c` is very interesting. It reminds me of some of the ideas in the book "Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory" by Joseph E. Stoy, which you should check out if you haven't.