... | ... | @@ -5,6 +5,8 @@ These are properties or qualities of any Haskell standard we would like to prese |
|
|
|
|
|
- import-safe - importing a new module can never silently change the behavior of a program, but it may cause a compile-time error. two programs that are identical except one has a superset of the imports of the other will either behave identically or at least one will fail to compile. (e.g. [OverlappingInstances](overlapping-instances) breaks this)
|
|
|
|
|
|
- independent of the evaluation order. The report does not specify nor require lazy evaluation as an evaluation strategy, it only specifies a non-strict semantics.
|
|
|
|
|
|
- admits an efficient implementation. features that require large amounts of run-time support or non-trivial restrictions on the implementation method should be avoided. (this is a tradeoff and the design space of haskell implementations has not fully been explored so we should be conservative when we can)
|
|
|
|
|
|
- transformation safe. the language will not have features that cause common optimizations and transformations to become non-meaning-preserving. All lambda calculus transformations should apply. (this is broken by the [MonomorphismRestriction](monomorphism-restriction) (eta-reduction/expansion) and [ImplicitParams](implicit-params) (beta-reduction))
|
... | ... | |