bound
bound copied to clipboard
ListT instance smells funny
ListT from transformers isn't really a monad transformer, so it seems most unlikely to be a valid Bound instance with the default definition.
So what's it will mean to have
| Weird (ListT Exp a)
| Weird (Exp [a])
Will have a AST node type "of type" a, yet having commuting multiple values (potentially none).
I don't know what's that can be useful for, but I don't see it's unlawful either.
I have no idea.