sseefried/shady-graphics — comment on commit fc12faff3d1acb31fcef1a4d9316ab0d6ed34e50
File:  line 0
By sseefried:

Hi Conal,

I'm going to need a little clarification on a few things. I followed your argument that the semantics of `Exp t` is the same as the semantics of `t` (or did you actually mean "the semantics of `Exp t` is `t`").

I then tried to consider the reasons for not wanting `Bool` to be in `Monoid` in Haskell, but you wrote "at least not the `Any` monoid". Is the reason for not choosing it to be the `Any` monoid the fact that this is already defined? I can understand why `Bool` is not in `Monoid`. There are, I guess, quite a few `mzero` and `mappend`s you could choose, and choosing one over another is arbitrary. Better to wrap the type in a `newtype` and then give it a semantics. But I'm not sure those are the reasons you think it's a bad idea. Do you think you could elaborate?

Your last "BTW" confused me too. The `Monoid` instance for `BoolE` is in the patch above. But I didn't add `Monoid Bool` which I would have had to to be consistent with the TCM principle.

The reason I added these instances in the first place was to make it possible for me to define a "clear" image (transparent everywhere) for `Image Bool` and `Image Color` that was more general. Do you have any ideas on how to do this?