On Wed, Aug 3, 2016 at 7:58 AM, MarLinn via Haskell-Cafe <haskell-cafe@haskell.org> wrote:
If all carts behave the same and contents don't matter just store PlainBaskets, i.e. a Basket without the annotation.

@MarLinn, Can you clarify the quoted statement.  If I were to make store PlainBaskets in the Cart, where would be annotating the Item as Changeble/Unchangable?  The way I understand this, you will have to pass their phatom type all the way from the top to the innermost field where it is required.

Would the design still hold, if we just declare Baskets of Plain types?

I appreciate your response, so far your design make sense. But, I am afraid I am not able to extend it to higher container types.