Post permalink

Is the primary motivation practical in the sense of invariants or also geared towards compiler tricks?

Good question ... if all the types in use are in immutable collections, and all the computations on those immutable collections are within LINQ computations, could the compiler assume purity and therefore allow laziness and referential transparency by default in those cases?