13. GHC Language Features¶
- 13.1. Language options
- 13.2. Unboxed types and primitive operations
- 13.3. Syntactic extensions
- 13.3.1. Unicode syntax
- 13.3.2. The magic hash
- 13.3.3. Negative literals
- 13.3.4. Fractional looking integer literals
- 13.3.5. Binary integer literals
- 13.3.6. Hexadecimal floating point literals
- 13.3.7. Numeric underscores
- 13.3.8. Pattern guards
- 13.3.9. View patterns
- 13.3.10. n+k patterns
- 13.3.11. The recursive do-notation
- 13.3.12. Applicative do-notation
- 13.3.13. Parallel List Comprehensions
- 13.3.14. Generalised (SQL-like) List Comprehensions
- 13.3.15. Monad comprehensions
- 13.3.16. New monadic failure desugaring mechanism
- 13.3.17. Rebindable syntax and the implicit Prelude import
- 13.3.18. Postfix operators
- 13.3.19. Tuple sections
- 13.3.20. Lambda-case
- 13.3.21. Empty case alternatives
- 13.3.22. Multi-way if-expressions
- 13.3.23. Local Fixity Declarations
- 13.3.24. Import and export extensions
- 13.3.25. More liberal syntax for function arguments
- 13.3.26. Summary of stolen syntax
- 13.4. Extensions to data types and type synonyms
- 13.4.1. Data types with no constructors
- 13.4.2. Data type contexts
- 13.4.3. Infix type constructors, classes, and type variables
- 13.4.4. Type operators
- 13.4.5. Liberalised type synonyms
- 13.4.6. Existentially quantified data constructors
- 13.4.7. Declaring data types with explicit constructor signatures
- 13.4.8. Generalised Algebraic Data Types (GADTs)
- 13.5. Extensions to the record system
- 13.6. Extensions to the “deriving” mechanism
- 13.6.1. Deriving instances for empty data types
- 13.6.2. Inferred context for deriving clauses
- 13.6.3. Stand-alone deriving declarations
- 13.6.4. Deriving instances of extra classes (
Data, etc.) - 13.6.5. Generalised derived instances for newtypes
- 13.6.6. Deriving any other class
- 13.6.7. Deriving strategies
- 13.6.8. Deriving via
- 13.7. Pattern synonyms
- 13.8. Class and instances declarations
- 13.9. Type families
- 13.10. Datatype promotion
- 13.11. Kind polymorphism
- 13.11.1. Overview of kind polymorphism
- 13.11.2. Overview of Type-in-Type
- 13.11.3. Principles of kind inference
- 13.11.4. Inferring the order of variables in a type/class declaration
- 13.11.5. Complete user-supplied kind signatures and polymorphic recursion
- 13.11.6. Standalone kind signatures and polymorphic recursion
- 13.11.7. Standalone kind signatures and declaration headers
- 13.11.8. Kind inference in closed type families
- 13.11.9. Kind inference in class instance declarations
- 13.11.10. Kind inference in type signatures
- 13.11.11. Explicit kind quantification
- 13.11.12. Implicit quantification in type synonyms and type family instances
- 13.11.13. Kind-indexed GADTs
- 13.11.14. Higher-rank kinds
- 13.11.15. Constraints in kinds
- 13.11.16. The kind
Type - 13.11.17. Inferring dependency in datatype declarations
- 13.11.18. Inferring dependency in user-written
foralls - 13.11.19. Kind defaulting without
PolyKinds - 13.11.20. Pretty-printing in the presence of kind polymorphism
- 13.12. Levity polymorphism
- 13.13. Type-Level Literals
- 13.14. Equality constraints, Coercible, and the kind Constraint
- 13.15. Quantified constraints
- 13.16. Extensions to type signatures
- 13.17. Lexically scoped type variables
- 13.18. Bindings and generalisation
- 13.19. Visible type application
- 13.20. Implicit parameters
- 13.21. Arbitrary-rank polymorphism
- 13.22. Impredicative polymorphism
- 13.23. Typed Holes
- 13.24. Partial Type Signatures
- 13.25. Custom compile-time errors
- 13.26. Deferring type errors to runtime
- 13.27. Template Haskell
- 13.28. Arrow notation
- 13.29. Bang patterns and Strict Haskell
- 13.30. Assertions
- 13.31. Static pointers
- 13.32. Pragmas
- 13.32.1.
LANGUAGEpragma - 13.32.2.
OPTIONS_GHCpragma - 13.32.3.
INCLUDEpragma - 13.32.4.
WARNINGandDEPRECATEDpragmas - 13.32.5.
MINIMALpragma - 13.32.6.
INLINEandNOINLINEpragmas - 13.32.7.
LINEpragma - 13.32.8.
COLUMNpragma - 13.32.9.
RULESpragma - 13.32.10.
SPECIALIZEpragma - 13.32.11.
SPECIALIZEinstance pragma - 13.32.12.
UNPACKpragma - 13.32.13.
NOUNPACKpragma - 13.32.14.
SOURCEpragma - 13.32.15.
COMPLETEpragmas - 13.32.16.
OVERLAPPING,OVERLAPPABLE,OVERLAPS, andINCOHERENTpragmas
- 13.32.1.
- 13.33. Rewrite rules
- 13.34. Special built-in functions
- 13.35. Generic classes
- 13.36. Generic programming
- 13.37. Roles
- 13.38. HasCallStack
- 13.39. Concurrent and Parallel Haskell
- 13.40. Safe Haskell