ref: 9afcafd33a81fc6c1f1134ed7c3580964b2d5e3b
parent: 35f0221df8568056c7b031c83d7657375a4e2797
author: Lennart Augustsson <lennart@augustsson.net>
date: Tue Jan 16 18:20:44 EST 2024
Minor clarifications.
--- a/README.md
+++ b/README.md
@@ -32,10 +32,10 @@
Differences:
* Top level definitions must have a type signature.
- * Type variables need an explicit `forall`.
+ * Type/kind variables need an explicit `forall`.
* There is no `Read` class.
* There is only deriving for `Eq`, `Ord`, `Show`, and `Typeable`.
- * Indentation is handled a little differently.
+ * Indentation is handled a little differently; one-line `let`, `case`, and `do` must use explicit braces.
* The `Prelude` has to be imported explicitly.
* Polymorphic types/kinds are never inferred; use a type/kind signature if you need it.
* A module must have an export list.
@@ -68,7 +68,7 @@
* QualifiedDo
* ScopedTypeVariables
* StandaloneKindSignatures
- * TupleSections
+ * TupleSections (only pairs right now)
* TypeLits
* TypeSynonymInstances
* UndecidableInstances
@@ -243,7 +243,7 @@
fully implement `OverloadedRecordUpdate`. When GHC decides how to do it, MicroHs will follow suit.
Haskell2010 code using records cannot be compiled directly with MicroHs, since the field names are not automatically selector functions.
-Given a field `foo` in a record you can use `foo` as a functions, in MicroHs you have to say `(.foo)` to get the selector function.
+Given a field `foo` in a record in Haskell2010 you can use `foo` as a function, whereas in MicroHs you have to say `(.foo)` to get the selector function.
Note that record updates cannot change the type of polymorphic fields.
--
⑨