Instead of tying operators to traits that come with laws / etc... the idea would be to create a single-purpose trait for each operator that it would desugar to. This would make it possible to attach the || and && operators to the semigroup instances for Bool.