| ... | @@ -119,3 +119,16 @@ f x = ... where |
... | @@ -119,3 +119,16 @@ f x = ... where |
|
|
|
|
|
|
|
|
|
|
|
|
open x would be allowed at the top level, in a let binding, or in a where binding.
|
|
open x would be allowed at the top level, in a let binding, or in a where binding.
|
|
|
|
|
|
|
|
## abstraction
|
|
|
|
|
|
|
|
|
|
|
|
It is often useful to limit the ability of users to fill in or access parts of a data type arbitrarily to maintain invariants, instituting the following rule would let you enforce that to some degree:
|
|
|
|
|
|
|
|
- Positional notation for pattern matching and constructor creation for a constructor may not be used unless all of its field labels are in scope.
|
|
|
|
|
|
|
|
|
|
|
|
This would insure that by not exporting a field label, it cannot be gotten around by using positional notation.
|
|
|
|
|
|
|
|
|
|
|
|
this fix would also require the polymorphic setting ability mentioned above and would partially mitigate the need for [ReadonlyConstructors](readonly-constructors) |
|
|
|
\ No newline at end of file |