9. GHC Language FeaturesΒΆ
- 9.1. Language options
- 9.2. Unboxed types and primitive operations
- 9.3. Syntactic extensions
- 9.3.1. Unicode syntax
- 9.3.2. The magic hash
- 9.3.3. Negative literals
- 9.3.4. Fractional looking integer literals
- 9.3.5. Binary integer literals
- 9.3.6. Hierarchical Modules
- 9.3.7. Pattern guards
- 9.3.8. View patterns
- 9.3.9. Pattern synonyms
- 9.3.10. n+k patterns
- 9.3.11. The recursive do-notation
- 9.3.12. Applicative do-notation
- 9.3.13. Parallel List Comprehensions
- 9.3.14. Generalised (SQL-Like) List Comprehensions
- 9.3.15. Monad comprehensions
- 9.3.16. New monadic failure desugaring mechanism
- 9.3.17. Rebindable syntax and the implicit Prelude import
- 9.3.18. Postfix operators
- 9.3.19. Tuple sections
- 9.3.20. Lambda-case
- 9.3.21. Empty case alternatives
- 9.3.22. Multi-way if-expressions
- 9.3.23. Local Fixity Declarations
- 9.3.24. Import and export extensions
- 9.3.25. Summary of stolen syntax
- 9.4. Extensions to data types and type synonyms
- 9.4.1. Data types with no constructors
- 9.4.2. Data type contexts
- 9.4.3. Infix type constructors, classes, and type variables
- 9.4.4. Type operators
- 9.4.5. Liberalised type synonyms
- 9.4.6. Existentially quantified data constructors
- 9.4.7. Declaring data types with explicit constructor signatures
- 9.4.8. Generalised Algebraic Data Types (GADTs)
- 9.5. Extensions to the record system
- 9.6. Extensions to the “deriving” mechanism
- 9.6.1. Inferred context for deriving clauses
- 9.6.2. Stand-alone deriving declarations
- 9.6.3. Deriving instances of extra classes (
Data
, etc.) - 9.6.4. Deriving
Functor
instances - 9.6.5. Deriving
Foldable
instances - 9.6.6. Deriving
Traversable
instances - 9.6.7. Deriving
Typeable
instances - 9.6.8. Deriving
Lift
instances - 9.6.9. Generalised derived instances for newtypes
- 9.6.10. Deriving any other class
- 9.7. Class and instances declarations
- 9.8. Type families
- 9.9. Kind polymorphism
- 9.10. Datatype promotion
- 9.11. Type-Level Literals
- 9.12. Equality constraints
- 9.13. The
Constraint
kind - 9.14. Other type system extensions
- 9.14.1. Explicit universal quantification (forall)
- 9.14.2. The context of a type signature
- 9.14.3. Ambiguous types and the ambiguity check
- 9.14.4. Implicit parameters
- 9.14.5. Explicitly-kinded quantification
- 9.14.6. Arbitrary-rank polymorphism
- 9.14.7. Impredicative polymorphism
- 9.14.8. Lexically scoped type variables
- 9.14.9. Bindings and generalisation
- 9.15. Typed Holes
- 9.16. Partial Type Signatures
- 9.17. Deferring type errors to runtime
- 9.18. Template Haskell
- 9.19. Arrow notation
- 9.20. Bang patterns
- 9.21. Assertions
- 9.22. Static pointers
- 9.23. Pragmas
- 9.23.1. LANGUAGE pragma
- 9.23.2.
OPTIONS_GHC
pragma - 9.23.3.
INCLUDE
pragma - 9.23.4.
WARNING
andDEPRECATED
pragmas - 9.23.5. MINIMAL pragma
- 9.23.6. INLINE and NOINLINE pragmas
- 9.23.7.
LINE
pragma - 9.23.8.
RULES
pragma - 9.23.9.
SPECIALIZE
pragma - 9.23.10.
SPECIALIZE
instance pragma - 9.23.11.
UNPACK
pragma - 9.23.12.
NOUNPACK
pragma - 9.23.13.
SOURCE
pragma - 9.23.14.
OVERLAPPING
,OVERLAPPABLE
,OVERLAPS
, andINCOHERENT
pragmas
- 9.24. Rewrite rules
- 9.25. Special built-in functions
- 9.26. Generic classes
- 9.27. Generic programming
- 9.28. Roles
- 9.29. Strict Haskell
- 9.30. Concurrent and Parallel Haskell
- 9.31. Safe Haskell