Fix #13399 by documenting higher-rank kinds.
[ghc.git] / docs / users_guide / glasgow_exts.rst
1 .. index::
2    single: language, GHC extensions
3
4 As with all known Haskell systems, GHC implements some extensions to the
5 standard Haskell language. They can all be enabled or disabled by command line
6 flags or language pragmas. By default GHC understands the most recent Haskell
7 version it supports, plus a handful of extensions.
8
9 Some of the Glasgow extensions serve to give you access to the
10 underlying facilities with which we implement Haskell. Thus, you can get
11 at the Raw Iron, if you are willing to write some non-portable code at a
12 more primitive level. You need not be “stuck” on performance because of
13 the implementation costs of Haskell's "high-level" features—you can
14 always code "under" them. In an extreme case, you can write all your
15 time-critical code in C, and then just glue it together with Haskell!
16
17 Before you get too carried away working at the lowest level (e.g.,
18 sloshing ``MutableByteArray#``\ s around your program), you may wish to
19 check if there are libraries that provide a "Haskellised veneer" over
20 the features you want. The separate
21 `libraries documentation <../libraries/index.html>`__ describes all the
22 libraries that come with GHC.
23
24 .. _options-language:
25
26 Language options
27 ================
28
29 .. index::
30    single: language; option
31    single: options; language
32    single: extensions; options controlling
33
34 The language option flags control what variation of the language are
35 permitted.
36
37 Language options can be controlled in two ways:
38
39 -  Every language option can switched on by a command-line flag
40    "``-X...``" (e.g. ``-XTemplateHaskell``), and switched off by the
41    flag "``-XNo...``"; (e.g. ``-XNoTemplateHaskell``).
42
43 -  Language options recognised by Cabal can also be enabled using the
44    ``LANGUAGE`` pragma, thus ``{-# LANGUAGE TemplateHaskell #-}`` (see
45    :ref:`language-pragma`).
46
47
48 Although not recommended, the deprecated :ghc-flag:`-fglasgow-exts` flag enables
49 a large swath of the extensions supported by GHC at once.
50
51 .. ghc-flag:: -fglasgow-exts
52
53     The flag ``-fglasgow-exts`` is equivalent to enabling the following extensions:
54
55     .. include:: what_glasgow_exts_does.gen.rst
56
57     Enabling these options is the *only* effect of ``-fglasgow-exts``. We are trying
58     to move away from this portmanteau flag, and towards enabling features
59     individually.
60
61 .. _primitives:
62
63 Unboxed types and primitive operations
64 ======================================
65
66 GHC is built on a raft of primitive data types and operations;
67 "primitive" in the sense that they cannot be defined in Haskell itself.
68 While you really can use this stuff to write fast code, we generally
69 find it a lot less painful, and more satisfying in the long run, to use
70 higher-level language features and libraries. With any luck, the code
71 you write will be optimised to the efficient unboxed version in any
72 case. And if it isn't, we'd like to know about it.
73
74 All these primitive data types and operations are exported by the
75 library ``GHC.Prim``, for which there is
76 :ghc-prim-ref:`detailed online documentation <GHC.Prim.>`. (This
77 documentation is generated from the file ``compiler/prelude/primops.txt.pp``.)
78
79 If you want to mention any of the primitive data types or operations in
80 your program, you must first import ``GHC.Prim`` to bring them into
81 scope. Many of them have names ending in ``#``, and to mention such names
82 you need the :ghc-flag:`-XMagicHash` extension (:ref:`magic-hash`).
83
84 The primops make extensive use of `unboxed types <#glasgow-unboxed>`__
85 and `unboxed tuples <#unboxed-tuples>`__, which we briefly summarise
86 here.
87
88 .. _glasgow-unboxed:
89
90 Unboxed types
91 -------------
92
93 Most types in GHC are boxed, which means that values of that type are
94 represented by a pointer to a heap object. The representation of a
95 Haskell ``Int``, for example, is a two-word heap object. An unboxed
96 type, however, is represented by the value itself, no pointers or heap
97 allocation are involved.
98
99 Unboxed types correspond to the “raw machine” types you would use in C:
100 ``Int#`` (long int), ``Double#`` (double), ``Addr#`` (void \*), etc. The
101 *primitive operations* (PrimOps) on these types are what you might
102 expect; e.g., ``(+#)`` is addition on ``Int#``\ s, and is the
103 machine-addition that we all know and love—usually one instruction.
104
105 Primitive (unboxed) types cannot be defined in Haskell, and are
106 therefore built into the language and compiler. Primitive types are
107 always unlifted; that is, a value of a primitive type cannot be bottom.
108 (Note: a "boxed" type means that a value is represented by a pointer to a heap
109 object; a "lifted" type means that terms of that type may be bottom. See
110 the next paragraph for an example.)
111 We use the convention (but it is only a convention) that primitive
112 types, values, and operations have a ``#`` suffix (see
113 :ref:`magic-hash`). For some primitive types we have special syntax for
114 literals, also described in the `same section <#magic-hash>`__.
115
116 Primitive values are often represented by a simple bit-pattern, such as
117 ``Int#``, ``Float#``, ``Double#``. But this is not necessarily the case:
118 a primitive value might be represented by a pointer to a heap-allocated
119 object. Examples include ``Array#``, the type of primitive arrays. Thus,
120 ``Array#`` is an unlifted, boxed type. A
121 primitive array is heap-allocated because it is too big a value to fit
122 in a register, and would be too expensive to copy around; in a sense, it
123 is accidental that it is represented by a pointer. If a pointer
124 represents a primitive value, then it really does point to that value:
125 no unevaluated thunks, no indirections. Nothing can be at the other end
126 of the pointer than the primitive value. A numerically-intensive program
127 using unboxed types can go a *lot* faster than its “standard”
128 counterpart—we saw a threefold speedup on one example.
129
130 Unboxed type kinds
131 ------------------
132
133 Because unboxed types are represented without the use of pointers, we
134 cannot store them in use a polymorphic datatype at an unboxed type.
135 For example, the ``Just`` node
136 of ``Just 42#`` would have to be different from the ``Just`` node of
137 ``Just 42``; the former stores an integer directly, while the latter
138 stores a pointer. GHC currently does not support this variety of ``Just``
139 nodes (nor for any other datatype). Accordingly, the *kind* of an unboxed
140 type is different from the kind of a boxed type.
141
142 The Haskell Report describes that ``*`` is the kind of ordinary datatypes,
143 such as ``Int``. Furthermore, type constructors can have kinds with arrows;
144 for example, ``Maybe`` has kind ``* -> *``. Unboxed types have a kind that
145 specifies their runtime representation. For example, the type ``Int#`` has
146 kind ``TYPE 'IntRep`` and ``Double#`` has kind ``TYPE 'DoubleRep``. These
147 kinds say that the runtime representation of an ``Int#`` is a machine integer,
148 and the runtime representation of a ``Double#`` is a machine double-precision
149 floating point. In contrast, the kind ``*`` is actually just a synonym
150 for ``TYPE 'PtrRepLifted``. More details of the ``TYPE`` mechanisms appear in
151 the `section on runtime representation polymorphism <#runtime-rep>`__.
152
153 Given that ``Int#``'s kind is not ``*``, it then it follows that
154 ``Maybe Int#`` is disallowed. Similarly, because type variables tend
155 to be of kind ``*`` (for example, in ``(.) :: (b -> c) -> (a -> b) -> a -> c``,
156 all the type variables have kind ``*``), polymorphism tends not to work
157 over primitive types. Stepping back, this makes some sense, because
158 a polymorphic function needs to manipulate the pointers to its data,
159 and most primitive types are unboxed.
160
161 There are some restrictions on the use of primitive types:
162
163 -  You cannot define a newtype whose representation type (the argument
164    type of the data constructor) is an unboxed type. Thus, this is
165    illegal:
166
167    ::
168
169          newtype A = MkA Int#
170
171 -  You cannot bind a variable with an unboxed type in a *top-level*
172    binding.
173
174 -  You cannot bind a variable with an unboxed type in a *recursive*
175    binding.
176
177 -  You may bind unboxed variables in a (non-recursive, non-top-level)
178    pattern binding, but you must make any such pattern-match strict.
179    (Failing to do so emits a warning :ghc-flag:`-Wunbanged-strict-patterns`.)
180    For example, rather than:
181
182    ::
183
184          data Foo = Foo Int Int#
185
186          f x = let (Foo a b, w) = ..rhs.. in ..body..
187
188    you must write:
189
190    ::
191
192          data Foo = Foo Int Int#
193
194          f x = let !(Foo a b, w) = ..rhs.. in ..body..
195
196    since ``b`` has type ``Int#``.
197
198 .. _unboxed-tuples:
199
200 Unboxed tuples
201 --------------
202
203 .. ghc-flag:: -XUnboxedTuples
204
205     Enable the use of unboxed tuple syntax.
206
207 Unboxed tuples aren't really exported by ``GHC.Exts``; they are a
208 syntactic extension enabled by the language flag :ghc-flag:`-XUnboxedTuples`. An
209 unboxed tuple looks like this: ::
210
211     (# e_1, ..., e_n #)
212
213 where ``e_1..e_n`` are expressions of any type (primitive or
214 non-primitive). The type of an unboxed tuple looks the same.
215
216 Note that when unboxed tuples are enabled, ``(#`` is a single lexeme, so
217 for example when using operators like ``#`` and ``#-`` you need to write
218 ``( # )`` and ``( #- )`` rather than ``(#)`` and ``(#-)``.
219
220 Unboxed tuples are used for functions that need to return multiple
221 values, but they avoid the heap allocation normally associated with
222 using fully-fledged tuples. When an unboxed tuple is returned, the
223 components are put directly into registers or on the stack; the unboxed
224 tuple itself does not have a composite representation. Many of the
225 primitive operations listed in ``primops.txt.pp`` return unboxed tuples.
226 In particular, the ``IO`` and ``ST`` monads use unboxed tuples to avoid
227 unnecessary allocation during sequences of operations.
228
229 There are some restrictions on the use of unboxed tuples:
230
231 -  The typical use of unboxed tuples is simply to return multiple
232    values, binding those multiple results with a ``case`` expression,
233    thus:
234
235    ::
236
237          f x y = (# x+1, y-1 #)
238          g x = case f x x of { (# a, b #) -> a + b }
239
240    You can have an unboxed tuple in a pattern binding, thus
241
242    ::
243
244          f x = let (# p,q #) = h x in ..body..
245
246    If the types of ``p`` and ``q`` are not unboxed, the resulting
247    binding is lazy like any other Haskell pattern binding. The above
248    example desugars like this:
249
250    ::
251
252          f x = let t = case h x of { (# p,q #) -> (p,q) }
253                    p = fst t
254                    q = snd t
255                in ..body..
256
257    Indeed, the bindings can even be recursive.
258
259 .. _unboxed-sums:
260
261 Unboxed sums
262 ------------
263
264 .. ghc-flag:: -XUnboxedSums
265
266     Enable the use of unboxed sum syntax.
267
268 `-XUnboxedSums` enables new syntax for anonymous, unboxed sum types. The syntax
269 for an unboxed sum type with N alternatives is ::
270
271     (# t_1 | t_2 | ... | t_N #)
272
273 where `t_1` ... `t_N` are types (which can be unlifted, including unboxed tuple
274 and sums).
275
276 Unboxed tuples can be used for multi-arity alternatives. For example: ::
277
278     (# (# Int, String #) | Bool #)
279
280 Term level syntax is similar. Leading and preceding bars (`|`) indicate which
281 alternative it is. Here is two terms of the type shown above: ::
282
283     (# (# 1, "foo" #) | #) -- first alternative
284
285     (# | True #) -- second alternative
286
287 Pattern syntax reflects the term syntax: ::
288
289     case x of
290       (# (# i, str #) | #) -> ...
291       (# | bool #) -> ...
292
293 Unboxed sums are "unboxed" in the sense that, instead of allocating sums in the
294 heap and representing values as pointers, unboxed sums are represented as their
295 components, just like unboxed tuples. These "components" depend on alternatives
296 of a sum type. Code generator tries to generate as compact layout as possible.
297 In the best case, size of an unboxed sum is size of its biggest alternative +
298 one word (for tag). The algorithm for generating memory layout for a sum type
299 works like this:
300
301 - All types are classified as one of these classes: 32bit word, 64bit word,
302   32bit float, 64bit float, pointer.
303
304 - For each alternative of the sum type, a layout that consists of these fields
305   is generated. For example, if an alternative has `Int`, `Float#` and `String`
306   fields, the layout will have an 32bit word, 32bit float and pointer fields.
307
308 - Layout fields are then overlapped so that the final layout will be as compact
309   as possible. E.g. say two alternatives have these fields: ::
310
311     Word32, String, Float#
312     Float#, Float#, Maybe Int
313
314   Final layout will be something like ::
315
316     Int32, Float32, Float32, Word32, Pointer
317
318   First `Int32` is for the tag. It has two `Float32` fields because floating
319   point types can't overlap with other types, because of limitations of the code
320   generator that we're hoping to overcome in the future, and second alternative
321   needs two `Float32` fields. `Word32` field is for the `Word32` in the first
322   alternative. `Pointer` field is shared between `String` and `Maybe Int` values
323   of the alternatives.
324
325   In the case of enumeration types (like `Bool`), the unboxed sum layout only
326   has an `Int32` field (i.e. the whole thing is represented by an integer).
327
328 In the example above, a value of this type is thus represented as 5 values. As
329 an another example, this is the layout for unboxed version of `Maybe a` type: ::
330
331     Int32, Pointer
332
333 The `Pointer` field is not used when tag says that it's `Nothing`. Otherwise
334 `Pointer` points to the value in `Just`.
335
336 .. _syntax-extns:
337
338 Syntactic extensions
339 ====================
340
341 .. _unicode-syntax:
342
343 Unicode syntax
344 --------------
345
346 .. ghc-flag:: -XUnicodeSyntax
347
348     Enable the use of Unicode characters in place of their equivalent ASCII
349     sequences.
350
351 The language extension :ghc-flag:`-XUnicodeSyntax` enables
352 Unicode characters to be used to stand for certain ASCII character
353 sequences. The following alternatives are provided:
354
355 +--------------+---------------+-------------+-----------------------------------------+
356 | ASCII        | Unicode       | Code point  | Name                                    |
357 |              | alternative   |             |                                         |
358 +==============+===============+=============+=========================================+
359 | ``::``       | ∷             | 0x2237      | PROPORTION                              |
360 +--------------+---------------+-------------+-----------------------------------------+
361 | ``=>``       | ⇒             | 0x21D2      | RIGHTWARDS DOUBLE ARROW                 |
362 +--------------+---------------+-------------+-----------------------------------------+
363 | ``->``       | →             | 0x2192      | RIGHTWARDS ARROW                        |
364 +--------------+---------------+-------------+-----------------------------------------+
365 | ``<-``       | ←             | 0x2190      | LEFTWARDS ARROW                         |
366 +--------------+---------------+-------------+-----------------------------------------+
367 | ``>-``       | ⤚             | 0x291a      | RIGHTWARDS ARROW-TAIL                   |
368 +--------------+---------------+-------------+-----------------------------------------+
369 | ``-<``       | ⤙             | 0x2919      | LEFTWARDS ARROW-TAIL                    |
370 +--------------+---------------+-------------+-----------------------------------------+
371 | ``>>-``      | ⤜             | 0x291C      | RIGHTWARDS DOUBLE ARROW-TAIL            |
372 +--------------+---------------+-------------+-----------------------------------------+
373 | ``-<<``      | ⤛             | 0x291B      | LEFTWARDS DOUBLE ARROW-TAIL             |
374 +--------------+---------------+-------------+-----------------------------------------+
375 | ``*``        | ★             | 0x2605      | BLACK STAR                              |
376 +--------------+---------------+-------------+-----------------------------------------+
377 | ``forall``   | ∀             | 0x2200      | FOR ALL                                 |
378 +--------------+---------------+-------------+-----------------------------------------+
379 | ``(|``       | ⦇             | 0x2987      | Z NOTATION LEFT IMAGE BRACKET           |
380 +--------------+---------------+-------------+-----------------------------------------+
381 | ``|)``       | ⦈             | 0x2988      | Z NOTATION RIGHT IMAGE BRACKET          |
382 +--------------+---------------+-------------+-----------------------------------------+
383 | ``[|``       | ⟦             | 0x27E6      | MATHEMATICAL LEFT WHITE SQUARE BRACKET  |
384 +--------------+---------------+-------------+-----------------------------------------+
385 | ``|]``       | ⟧             | 0x27E7      | MATHEMATICAL RIGHT WHITE SQUARE BRACKET |
386 +--------------+---------------+-------------+-----------------------------------------+
387
388 .. _magic-hash:
389
390 The magic hash
391 --------------
392
393 .. ghc-flag:: -XMagicHash
394
395     Enable the use of the hash character (``#``) as an identifier suffix.
396
397 The language extension :ghc-flag:`-XMagicHash` allows ``#`` as a postfix modifier
398 to identifiers. Thus, ``x#`` is a valid variable, and ``T#`` is a valid type
399 constructor or data constructor.
400
401 The hash sign does not change semantics at all. We tend to use variable
402 names ending in "#" for unboxed values or types (e.g. ``Int#``), but
403 there is no requirement to do so; they are just plain ordinary
404 variables. Nor does the :ghc-flag:`-XMagicHash` extension bring anything into
405 scope. For example, to bring ``Int#`` into scope you must import
406 ``GHC.Prim`` (see :ref:`primitives`); the :ghc-flag:`-XMagicHash` extension then
407 allows you to *refer* to the ``Int#`` that is now in scope. Note that
408 with this option, the meaning of ``x#y = 0`` is changed: it defines a
409 function ``x#`` taking a single argument ``y``; to define the operator
410 ``#``, put a space: ``x # y = 0``.
411
412 The :ghc-flag:`-XMagicHash` also enables some new forms of literals (see
413 :ref:`glasgow-unboxed`):
414
415 -  ``'x'#`` has type ``Char#``
416
417 -  ``"foo"#`` has type ``Addr#``
418
419 -  ``3#`` has type ``Int#``. In general, any Haskell integer lexeme
420    followed by a ``#`` is an ``Int#`` literal, e.g. ``-0x3A#`` as well as
421    ``32#``.
422
423 -  ``3##`` has type ``Word#``. In general, any non-negative Haskell
424    integer lexeme followed by ``##`` is a ``Word#``.
425
426 -  ``3.2#`` has type ``Float#``.
427
428 -  ``3.2##`` has type ``Double#``
429
430 .. _negative-literals:
431
432 Negative literals
433 -----------------
434
435 .. ghc-flag:: -XNegativeLiterals
436
437     :since: 7.8.1
438
439     Enable the use of un-parenthesized negative numeric literals.
440
441 The literal ``-123`` is, according to Haskell98 and Haskell 2010,
442 desugared as ``negate (fromInteger 123)``. The language extension
443 :ghc-flag:`-XNegativeLiterals` means that it is instead desugared as
444 ``fromInteger (-123)``.
445
446 This can make a difference when the positive and negative range of a
447 numeric data type don't match up. For example, in 8-bit arithmetic -128
448 is representable, but +128 is not. So ``negate (fromInteger 128)`` will
449 elicit an unexpected integer-literal-overflow message.
450
451 .. _num-decimals:
452
453 Fractional looking integer literals
454 -----------------------------------
455
456 .. ghc-flag:: -XNumDecimals
457
458     :since: 7.8.1
459
460     Allow the use of floating-point literal syntax for integral types.
461
462 Haskell 2010 and Haskell 98 define floating literals with the syntax
463 ``1.2e6``. These literals have the type ``Fractional a => a``.
464
465 The language extension :ghc-flag:`-XNumDecimals` allows you to also use the
466 floating literal syntax for instances of ``Integral``, and have values
467 like ``(1.2e6 :: Num a => a)``
468
469 .. _binary-literals:
470
471 Binary integer literals
472 -----------------------
473
474 .. ghc-flag:: -XBinaryLiterals
475
476     :since: 7.10.1
477
478     Allow the use of binary notation in integer literals.
479
480 Haskell 2010 and Haskell 98 allows for integer literals to be given in
481 decimal, octal (prefixed by ``0o`` or ``0O``), or hexadecimal notation
482 (prefixed by ``0x`` or ``0X``).
483
484 The language extension :ghc-flag:`-XBinaryLiterals` adds support for expressing
485 integer literals in binary notation with the prefix ``0b`` or ``0B``. For
486 instance, the binary integer literal ``0b11001001`` will be desugared into
487 ``fromInteger 201`` when :ghc-flag:`-XBinaryLiterals` is enabled.
488
489 .. _pattern-guards:
490
491 Pattern guards
492 --------------
493
494 .. ghc-flag:: -XNoPatternGuards
495
496     :implied by: :ghc-flag:`-XHaskell98`
497     :since: 6.8.1
498
499 Disable `pattern guards
500 <http://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-460003.13>`__.
501
502 .. _view-patterns:
503
504 View patterns
505 -------------
506
507 .. ghc-flag:: -XViewPatterns
508
509     Allow use of view pattern syntax.
510
511 View patterns are enabled by the flag :ghc-flag:`-XViewPatterns`. More
512 information and examples of view patterns can be found on the
513 :ghc-wiki:`Wiki page <ViewPatterns>`.
514
515 View patterns are somewhat like pattern guards that can be nested inside
516 of other patterns. They are a convenient way of pattern-matching against
517 values of abstract types. For example, in a programming language
518 implementation, we might represent the syntax of the types of the
519 language as follows: ::
520
521     type Typ
522
523     data TypView = Unit
524                  | Arrow Typ Typ
525
526     view :: Typ -> TypView
527
528     -- additional operations for constructing Typ's ...
529
530 The representation of Typ is held abstract, permitting implementations
531 to use a fancy representation (e.g., hash-consing to manage sharing).
532 Without view patterns, using this signature is a little inconvenient: ::
533
534     size :: Typ -> Integer
535     size t = case view t of
536       Unit -> 1
537       Arrow t1 t2 -> size t1 + size t2
538
539 It is necessary to iterate the case, rather than using an equational
540 function definition. And the situation is even worse when the matching
541 against ``t`` is buried deep inside another pattern.
542
543 View patterns permit calling the view function inside the pattern and
544 matching against the result: ::
545
546     size (view -> Unit) = 1
547     size (view -> Arrow t1 t2) = size t1 + size t2
548
549 That is, we add a new form of pattern, written ⟨expression⟩ ``->``
550 ⟨pattern⟩ that means "apply the expression to whatever we're trying to
551 match against, and then match the result of that application against the
552 pattern". The expression can be any Haskell expression of function type,
553 and view patterns can be used wherever patterns are used.
554
555 The semantics of a pattern ``(`` ⟨exp⟩ ``->`` ⟨pat⟩ ``)`` are as
556 follows:
557
558 -  Scoping:
559    The variables bound by the view pattern are the variables bound by
560    ⟨pat⟩.
561
562    Any variables in ⟨exp⟩ are bound occurrences, but variables bound "to
563    the left" in a pattern are in scope. This feature permits, for
564    example, one argument to a function to be used in the view of another
565    argument. For example, the function ``clunky`` from
566    :ref:`pattern-guards` can be written using view patterns as follows: ::
567
568        clunky env (lookup env -> Just val1) (lookup env -> Just val2) = val1 + val2
569        ...other equations for clunky...
570
571    More precisely, the scoping rules are:
572
573    -  In a single pattern, variables bound by patterns to the left of a
574       view pattern expression are in scope. For example: ::
575
576           example :: Maybe ((String -> Integer,Integer), String) -> Bool
577           example Just ((f,_), f -> 4) = True
578
579       Additionally, in function definitions, variables bound by matching
580       earlier curried arguments may be used in view pattern expressions
581       in later arguments: ::
582
583           example :: (String -> Integer) -> String -> Bool
584           example f (f -> 4) = True
585
586       That is, the scoping is the same as it would be if the curried
587       arguments were collected into a tuple.
588
589    -  In mutually recursive bindings, such as ``let``, ``where``, or the
590       top level, view patterns in one declaration may not mention
591       variables bound by other declarations. That is, each declaration
592       must be self-contained. For example, the following program is not
593       allowed: ::
594
595           let {(x -> y) = e1 ;
596                (y -> x) = e2 } in x
597
598    (For some amplification on this design choice see :ghc-ticket:`4061`.
599
600 -  Typing: If ⟨exp⟩ has type ⟨T1⟩ ``->`` ⟨T2⟩ and ⟨pat⟩ matches a ⟨T2⟩,
601    then the whole view pattern matches a ⟨T1⟩.
602
603 -  Matching: To the equations in Section 3.17.3 of the `Haskell 98
604    Report <http://www.haskell.org/onlinereport/>`__, add the following: ::
605
606        case v of { (e -> p) -> e1 ; _ -> e2 }
607         =
608        case (e v) of { p -> e1 ; _ -> e2 }
609
610    That is, to match a variable ⟨v⟩ against a pattern ``(`` ⟨exp⟩ ``->``
611    ⟨pat⟩ ``)``, evaluate ``(`` ⟨exp⟩ ⟨v⟩ ``)`` and match the result
612    against ⟨pat⟩.
613
614 -  Efficiency: When the same view function is applied in multiple
615    branches of a function definition or a case expression (e.g., in
616    ``size`` above), GHC makes an attempt to collect these applications
617    into a single nested case expression, so that the view function is
618    only applied once. Pattern compilation in GHC follows the matrix
619    algorithm described in Chapter 4 of `The Implementation of Functional
620    Programming
621    Languages <http://research.microsoft.com/~simonpj/Papers/slpj-book-1987/>`__.
622    When the top rows of the first column of a matrix are all view
623    patterns with the "same" expression, these patterns are transformed
624    into a single nested case. This includes, for example, adjacent view
625    patterns that line up in a tuple, as in
626
627    ::
628
629        f ((view -> A, p1), p2) = e1
630        f ((view -> B, p3), p4) = e2
631
632    The current notion of when two view pattern expressions are "the
633    same" is very restricted: it is not even full syntactic equality.
634    However, it does include variables, literals, applications, and
635    tuples; e.g., two instances of ``view ("hi", "there")`` will be
636    collected. However, the current implementation does not compare up to
637    alpha-equivalence, so two instances of ``(x, view x -> y)`` will not
638    be coalesced.
639
640 .. _n-k-patterns:
641
642 n+k patterns
643 ------------
644
645 .. ghc-flag:: -XNPlusKPatterns
646
647     :implied by: :ghc-flag:`-XHaskell98`
648     :since: 6.12
649
650     Enable use of ``n+k`` patterns.
651
652 .. _recursive-do-notation:
653
654 The recursive do-notation
655 -------------------------
656
657 .. ghc-flag:: -XRecursiveDo
658
659     Allow the use of recursive ``do`` notation.
660
661 The do-notation of Haskell 98 does not allow *recursive bindings*, that
662 is, the variables bound in a do-expression are visible only in the
663 textually following code block. Compare this to a let-expression, where
664 bound variables are visible in the entire binding group.
665
666 It turns out that such recursive bindings do indeed make sense for a
667 variety of monads, but not all. In particular, recursion in this sense
668 requires a fixed-point operator for the underlying monad, captured by
669 the ``mfix`` method of the ``MonadFix`` class, defined in
670 ``Control.Monad.Fix`` as follows: ::
671
672     class Monad m => MonadFix m where
673        mfix :: (a -> m a) -> m a
674
675 Haskell's ``Maybe``, ``[]`` (list), ``ST`` (both strict and lazy
676 versions), ``IO``, and many other monads have ``MonadFix`` instances. On
677 the negative side, the continuation monad, with the signature
678 ``(a -> r) -> r``, does not.
679
680 For monads that do belong to the ``MonadFix`` class, GHC provides an
681 extended version of the do-notation that allows recursive bindings. The
682 :ghc-flag:`-XRecursiveDo` (language pragma: ``RecursiveDo``) provides the
683 necessary syntactic support, introducing the keywords ``mdo`` and
684 ``rec`` for higher and lower levels of the notation respectively. Unlike
685 bindings in a ``do`` expression, those introduced by ``mdo`` and ``rec``
686 are recursively defined, much like in an ordinary let-expression. Due to
687 the new keyword ``mdo``, we also call this notation the *mdo-notation*.
688
689 Here is a simple (albeit contrived) example:
690
691 ::
692
693     {-# LANGUAGE RecursiveDo #-}
694     justOnes = mdo { xs <- Just (1:xs)
695                    ; return (map negate xs) }
696
697 or equivalently
698
699 ::
700
701     {-# LANGUAGE RecursiveDo #-}
702     justOnes = do { rec { xs <- Just (1:xs) }
703                   ; return (map negate xs) }
704
705 As you can guess ``justOnes`` will evaluate to ``Just [-1,-1,-1,...``.
706
707 GHC's implementation the mdo-notation closely follows the original
708 translation as described in the paper `A recursive do for
709 Haskell <http://leventerkok.github.io/papers/recdo.pdf>`__, which
710 in turn is based on the work `Value Recursion in Monadic
711 Computations <http://leventerkok.github.io/papers/erkok-thesis.pdf>`__.
712 Furthermore, GHC extends the syntax described in the former paper with a
713 lower level syntax flagged by the ``rec`` keyword, as we describe next.
714
715 Recursive binding groups
716 ~~~~~~~~~~~~~~~~~~~~~~~~
717
718 The flag :ghc-flag:`-XRecursiveDo` also introduces a new keyword ``rec``, which
719 wraps a mutually-recursive group of monadic statements inside a ``do``
720 expression, producing a single statement. Similar to a ``let`` statement
721 inside a ``do``, variables bound in the ``rec`` are visible throughout
722 the ``rec`` group, and below it. For example, compare
723
724 ::
725
726         do { a <- getChar            do { a <- getChar
727            ; let { r1 = f a r2          ; rec { r1 <- f a r2
728            ;     ; r2 = g r1 }          ;     ; r2 <- g r1 }
729            ; return (r1 ++ r2) }        ; return (r1 ++ r2) }
730
731 In both cases, ``r1`` and ``r2`` are available both throughout the
732 ``let`` or ``rec`` block, and in the statements that follow it. The
733 difference is that ``let`` is non-monadic, while ``rec`` is monadic. (In
734 Haskell ``let`` is really ``letrec``, of course.)
735
736 The semantics of ``rec`` is fairly straightforward. Whenever GHC finds a
737 ``rec`` group, it will compute its set of bound variables, and will
738 introduce an appropriate call to the underlying monadic value-recursion
739 operator ``mfix``, belonging to the ``MonadFix`` class. Here is an
740 example:
741
742 ::
743
744     rec { b <- f a c     ===>    (b,c) <- mfix (\ ~(b,c) -> do { b <- f a c
745         ; c <- f b a }                                         ; c <- f b a
746                                                                ; return (b,c) })
747
748 As usual, the meta-variables ``b``, ``c`` etc., can be arbitrary
749 patterns. In general, the statement ``rec ss`` is desugared to the
750 statement
751
752 ::
753
754     vs <- mfix (\ ~vs -> do { ss; return vs })
755
756 where ``vs`` is a tuple of the variables bound by ``ss``.
757
758 Note in particular that the translation for a ``rec`` block only
759 involves wrapping a call to ``mfix``: it performs no other analysis on
760 the bindings. The latter is the task for the ``mdo`` notation, which is
761 described next.
762
763 The ``mdo`` notation
764 ~~~~~~~~~~~~~~~~~~~~
765
766 A ``rec``-block tells the compiler where precisely the recursive knot
767 should be tied. It turns out that the placement of the recursive knots
768 can be rather delicate: in particular, we would like the knots to be
769 wrapped around as minimal groups as possible. This process is known as
770 *segmentation*, and is described in detail in Section 3.2 of `A
771 recursive do for
772 Haskell <http://leventerkok.github.io/papers/recdo.pdf>`__.
773 Segmentation improves polymorphism and reduces the size of the recursive
774 knot. Most importantly, it avoids unnecessary interference caused by a
775 fundamental issue with the so-called *right-shrinking* axiom for monadic
776 recursion. In brief, most monads of interest (IO, strict state, etc.) do
777 *not* have recursion operators that satisfy this axiom, and thus not
778 performing segmentation can cause unnecessary interference, changing the
779 termination behavior of the resulting translation. (Details can be found
780 in Sections 3.1 and 7.2.2 of `Value Recursion in Monadic
781 Computations <http://leventerkok.github.io/papers/erkok-thesis.pdf>`__.)
782
783 The ``mdo`` notation removes the burden of placing explicit ``rec``
784 blocks in the code. Unlike an ordinary ``do`` expression, in which
785 variables bound by statements are only in scope for later statements,
786 variables bound in an ``mdo`` expression are in scope for all statements
787 of the expression. The compiler then automatically identifies minimal
788 mutually recursively dependent segments of statements, treating them as
789 if the user had wrapped a ``rec`` qualifier around them.
790
791 The definition is syntactic:
792
793 -  A generator ⟨g⟩ *depends* on a textually following generator ⟨g'⟩, if
794
795    -  ⟨g'⟩ defines a variable that is used by ⟨g⟩, or
796
797    -  ⟨g'⟩ textually appears between ⟨g⟩ and ⟨g''⟩, where ⟨g⟩ depends on
798       ⟨g''⟩.
799
800 -  A *segment* of a given ``mdo``-expression is a minimal sequence of
801    generators such that no generator of the sequence depends on an
802    outside generator. As a special case, although it is not a generator,
803    the final expression in an ``mdo``-expression is considered to form a
804    segment by itself.
805
806 Segments in this sense are related to *strongly-connected components*
807 analysis, with the exception that bindings in a segment cannot be
808 reordered and must be contiguous.
809
810 Here is an example ``mdo``-expression, and its translation to ``rec``
811 blocks:
812
813 ::
814
815     mdo { a <- getChar      ===> do { a <- getChar
816         ; b <- f a c                ; rec { b <- f a c
817         ; c <- f b a                ;     ; c <- f b a }
818         ; z <- h a b                ; z <- h a b
819         ; d <- g d e                ; rec { d <- g d e
820         ; e <- g a z                ;     ; e <- g a z }
821         ; putChar c }               ; putChar c }
822
823 Note that a given ``mdo`` expression can cause the creation of multiple
824 ``rec`` blocks. If there are no recursive dependencies, ``mdo`` will
825 introduce no ``rec`` blocks. In this latter case an ``mdo`` expression
826 is precisely the same as a ``do`` expression, as one would expect.
827
828 In summary, given an ``mdo`` expression, GHC first performs
829 segmentation, introducing ``rec`` blocks to wrap over minimal recursive
830 groups. Then, each resulting ``rec`` is desugared, using a call to
831 ``Control.Monad.Fix.mfix`` as described in the previous section. The
832 original ``mdo``-expression typechecks exactly when the desugared
833 version would do so.
834
835 Here are some other important points in using the recursive-do notation:
836
837 -  It is enabled with the flag :ghc-flag:`-XRecursiveDo`, or the
838    ``LANGUAGE RecursiveDo`` pragma. (The same flag enables both
839    ``mdo``-notation, and the use of ``rec`` blocks inside ``do``
840    expressions.)
841
842 -  ``rec`` blocks can also be used inside ``mdo``-expressions, which
843    will be treated as a single statement. However, it is good style to
844    either use ``mdo`` or ``rec`` blocks in a single expression.
845
846 -  If recursive bindings are required for a monad, then that monad must
847    be declared an instance of the ``MonadFix`` class.
848
849 -  The following instances of ``MonadFix`` are automatically provided:
850    List, Maybe, IO. Furthermore, the ``Control.Monad.ST`` and
851    ``Control.Monad.ST.Lazy`` modules provide the instances of the
852    ``MonadFix`` class for Haskell's internal state monad (strict and
853    lazy, respectively).
854
855 -  Like ``let`` and ``where`` bindings, name shadowing is not allowed
856    within an ``mdo``-expression or a ``rec``-block; that is, all the
857    names bound in a single ``rec`` must be distinct. (GHC will complain
858    if this is not the case.)
859
860 .. _applicative-do:
861
862 Applicative do-notation
863 -----------------------
864
865 .. index::
866    single: Applicative do-notation
867    single: do-notation; Applicative
868
869 .. ghc-flag:: -XApplicativeDo
870
871     :since: 8.0.1
872
873     Allow use of ``Applicative`` ``do`` notation.
874
875 The language option :ghc-flag:`-XApplicativeDo` enables an alternative translation for
876 the do-notation, which uses the operators ``<$>``, ``<*>``, along with ``join``
877 as far as possible. There are two main reasons for wanting to do this:
878
879 -  We can use do-notation with types that are an instance of ``Applicative`` and
880    ``Functor``, but not ``Monad``
881 -  In some monads, using the applicative operators is more efficient than monadic
882    bind. For example, it may enable more parallelism.
883
884 Applicative do-notation desugaring preserves the original semantics, provided
885 that the ``Applicative`` instance satisfies ``<*> = ap`` and ``pure = return``
886 (these are true of all the common monadic types). Thus, you can normally turn on
887 :ghc-flag:`-XApplicativeDo` without fear of breaking your program. There is one pitfall
888 to watch out for; see :ref:`applicative-do-pitfall`.
889
890 There are no syntactic changes with :ghc-flag:`-XApplicativeDo`. The only way it shows
891 up at the source level is that you can have a ``do`` expression that doesn't
892 require a ``Monad`` constraint. For example, in GHCi: ::
893
894     Prelude> :set -XApplicativeDo
895     Prelude> :t \m -> do { x <- m; return (not x) }
896     \m -> do { x <- m; return (not x) }
897       :: Functor f => f Bool -> f Bool
898
899 This example only requires ``Functor``, because it is translated into ``(\x ->
900 not x) <$> m``. A more complex example requires ``Applicative``, ::
901
902     Prelude> :t \m -> do { x <- m 'a'; y <- m 'b'; return (x || y) }
903     \m -> do { x <- m 'a'; y <- m 'b'; return (x || y) }
904       :: Applicative f => (Char -> f Bool) -> f Bool
905
906 Here GHC has translated the expression into ::
907
908     (\x y -> x || y) <$> m 'a' <*> m 'b'
909
910 It is possible to see the actual translation by using :ghc-flag:`-ddump-ds`, but be
911 warned, the output is quite verbose.
912
913 Note that if the expression can't be translated into uses of ``<$>``, ``<*>``
914 only, then it will incur a ``Monad`` constraint as usual. This happens when
915 there is a dependency on a value produced by an earlier statement in the
916 ``do``-block: ::
917
918     Prelude> :t \m -> do { x <- m True; y <- m x; return (x || y) }
919     \m -> do { x <- m True; y <- m x; return (x || y) }
920       :: Monad m => (Bool -> m Bool) -> m Bool
921
922 Here, ``m x`` depends on the value of ``x`` produced by the first statement, so
923 the expression cannot be translated using ``<*>``.
924
925 In general, the rule for when a ``do`` statement incurs a ``Monad`` constraint
926 is as follows. If the do-expression has the following form: ::
927
928     do p1 <- E1; ...; pn <- En; return E
929
930 where none of the variables defined by ``p1...pn`` are mentioned in ``E1...En``,
931 and ``p1...pn`` are all variables or lazy patterns,
932 then the expression will only require ``Applicative``. Otherwise, the expression
933 will require ``Monad``. The block may return a pure expression ``E`` depending
934 upon the results ``p1...pn`` with either ``return`` or ``pure``.
935
936 Note: the final statement must match one of these patterns exactly:
937
938 - ``return E``
939 - ``return $ E``
940 - ``pure E``
941 - ``pure $ E``
942
943 otherwise GHC cannot recognise it as a ``return`` statement, and the
944 transformation to use ``<$>`` that we saw above does not apply.  In
945 particular, slight variations such as ``return . Just $ x`` or ``let x
946 = e in return x`` would not be recognised.
947
948 If the final statement is not of one of these forms, GHC falls back to
949 standard ``do`` desugaring, and the expression will require a
950 ``Monad`` constraint.
951
952 When the statements of a ``do`` expression have dependencies between
953 them, and ``ApplicativeDo`` cannot infer an ``Applicative`` type, it
954 uses a heuristic algorithm to try to use ``<*>`` as much as possible.
955 This algorithm usually finds the best solution, but in rare complex
956 cases it might miss an opportunity.  There is an algorithm that finds
957 the optimal solution, provided as an option:
958
959 .. ghc-flag:: -foptimal-applicative-do
960
961     :since: 8.0.1
962
963     Enables an alternative algorithm for choosing where to use ``<*>``
964     in conjunction with the ``ApplicativeDo`` language extension.
965     This algorithm always finds the optimal solution, but it is
966     expensive: ``O(n^3)``, so this option can lead to long compile
967     times when there are very large ``do`` expressions (over 100
968     statements).  The default ``ApplicativeDo`` algorithm is ``O(n^2)``.
969
970
971 .. _applicative-do-strict:
972
973 Strict patterns
974 ~~~~~~~~~~~~~~~
975
976
977 A strict pattern match in a bind statement prevents
978 ``ApplicativeDo`` from transforming that statement to use
979 ``Applicative``.  This is because the transformation would change the
980 semantics by making the expression lazier.
981
982 For example, this code will require a ``Monad`` constraint::
983
984     > :t \m -> do { (x:xs) <- m; return x }
985     \m -> do { (x:xs) <- m; return x } :: Monad m => m [b] -> m b
986
987 but making the pattern match lazy allows it to have a ``Functor`` constraint::
988
989     > :t \m -> do { ~(x:xs) <- m; return x }
990     \m -> do { ~(x:xs) <- m; return x } :: Functor f => f [b] -> f b
991
992 A "strict pattern match" is any pattern match that can fail.  For
993 example, ``()``, ``(x:xs)``, ``!z``, and ``C x`` are strict patterns,
994 but ``x`` and ``~(1,2)`` are not.  For the purposes of
995 ``ApplicativeDo``, a pattern match against a ``newtype`` constructor
996 is considered strict.
997
998 When there's a strict pattern match in a sequence of statements,
999 ``ApplicativeDo`` places a ``>>=`` between that statement and the one
1000 that follows it.  The sequence may be transformed to use ``<*>``
1001 elsewhere, but the strict pattern match and the following statement
1002 will always be connected with ``>>=``, to retain the same strictness
1003 semantics as the standard do-notation.  If you don't want this, simply
1004 put a ``~`` on the pattern match to make it lazy.
1005
1006 .. _applicative-do-existential:
1007
1008 Existential patterns and GADTs
1009 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1010
1011 When the pattern in a statement matches a constructor with
1012 existential type variables and/or constraints, the transformation that
1013 ``ApplicativeDo`` performs may mean that the pattern does not scope
1014 over the statements that follow it.  This is because the rearrangement
1015 happens before the expression is typechecked.  For example, this
1016 program does not typecheck::
1017
1018     {-# LANGUAGE RankNTypes, GADTs, ApplicativeDo #-}
1019
1020     data T where A :: forall a . Eq a => a -> T
1021
1022     test = do
1023       A x <- undefined
1024       _ <- return 'a'
1025       _ <- return 'b'
1026       return (x == x)
1027
1028 The reason is that the ``Eq`` constraint that would be brought into
1029 scope from the pattern match ``A x`` is not available when
1030 typechecking the expression ``x == x``, because ``ApplicativeDo`` has
1031 rearranged the expression to look like this::
1032
1033     test =
1034       (\x _ -> x == x)
1035         <$> do A x <- undefined; _ <- return 'a'; return x
1036         <*> return 'b'
1037
1038 (Note that the ``return 'a'`` and ``return 'b'`` statements are needed
1039 to make ``ApplicativeDo`` apply despite the restriction noted in
1040 :ref:`applicative-do-strict`, because ``A x`` is a strict pattern match.)
1041
1042 Turning off ``ApplicativeDo`` lets the program typecheck.  This is
1043 something to bear in mind when using ``ApplicativeDo`` in combination
1044 with :ref:`existential-quantification` or :ref:`gadt`.
1045
1046 .. _applicative-do-pitfall:
1047
1048 Things to watch out for
1049 ~~~~~~~~~~~~~~~~~~~~~~~
1050
1051 Your code should just work as before when :ghc-flag:`-XApplicativeDo` is enabled,
1052 provided you use conventional ``Applicative`` instances. However, if you define
1053 a ``Functor`` or ``Applicative`` instance using do-notation, then it will likely
1054 get turned into an infinite loop by GHC. For example, if you do this: ::
1055
1056     instance Functor MyType where
1057         fmap f m = do x <- m; return (f x)
1058
1059 Then applicative desugaring will turn it into ::
1060
1061     instance Functor MyType where
1062         fmap f m = fmap (\x -> f x) m
1063
1064 And the program will loop at runtime. Similarly, an ``Applicative`` instance
1065 like this ::
1066
1067     instance Applicative MyType where
1068         pure = return
1069         x <*> y = do f <- x; a <- y; return (f a)
1070
1071 will result in an infinte loop when ``<*>`` is called.
1072
1073 Just as you wouldn't define a ``Monad`` instance using the do-notation, you
1074 shouldn't define ``Functor`` or ``Applicative`` instance using do-notation (when
1075 using ``ApplicativeDo``) either. The correct way to define these instances in
1076 terms of ``Monad`` is to use the ``Monad`` operations directly, e.g. ::
1077
1078     instance Functor MyType where
1079         fmap f m = m >>= return . f
1080
1081     instance Applicative MyType where
1082         pure = return
1083         (<*>) = ap
1084
1085
1086 .. _parallel-list-comprehensions:
1087
1088 Parallel List Comprehensions
1089 ----------------------------
1090
1091 .. index::
1092    single: list comprehensions; parallel
1093    single: parallel list comprehensions
1094
1095 .. ghc-flag:: -XParallelListComp
1096
1097     Allow parallel list comprehension syntax.
1098
1099 Parallel list comprehensions are a natural extension to list
1100 comprehensions. List comprehensions can be thought of as a nice syntax
1101 for writing maps and filters. Parallel comprehensions extend this to
1102 include the ``zipWith`` family.
1103
1104 A parallel list comprehension has multiple independent branches of
1105 qualifier lists, each separated by a ``|`` symbol. For example, the
1106 following zips together two lists: ::
1107
1108        [ (x, y) | x <- xs | y <- ys ]
1109
1110 The behaviour of parallel list comprehensions follows that of zip, in
1111 that the resulting list will have the same length as the shortest
1112 branch.
1113
1114 We can define parallel list comprehensions by translation to regular
1115 comprehensions. Here's the basic idea:
1116
1117 Given a parallel comprehension of the form: ::
1118
1119        [ e | p1 <- e11, p2 <- e12, ...
1120            | q1 <- e21, q2 <- e22, ...
1121            ...
1122        ]
1123
1124 This will be translated to: ::
1125
1126        [ e | ((p1,p2), (q1,q2), ...) <- zipN [(p1,p2) | p1 <- e11, p2 <- e12, ...]
1127                                              [(q1,q2) | q1 <- e21, q2 <- e22, ...]
1128                                              ...
1129        ]
1130
1131 where ``zipN`` is the appropriate zip for the given number of branches.
1132
1133 .. _generalised-list-comprehensions:
1134
1135 Generalised (SQL-like) List Comprehensions
1136 ------------------------------------------
1137
1138 .. index::
1139    single: list comprehensions; generalised
1140    single: extended list comprehensions
1141    single: group
1142    single: SQL
1143
1144 .. ghc-flag:: -XTransformListComp
1145
1146     Allow use of generalised list (SQL-like) comprehension syntax. This
1147     introduces the ``group``, ``by``, and ``using`` keywords.
1148
1149 Generalised list comprehensions are a further enhancement to the list
1150 comprehension syntactic sugar to allow operations such as sorting and
1151 grouping which are familiar from SQL. They are fully described in the
1152 paper `Comprehensive comprehensions: comprehensions with "order by" and
1153 "group by" <https://www.microsoft.com/en-us/research/wp-content/uploads/2007/09/list-comp.pdf>`__,
1154 except that the syntax we use differs slightly from the paper.
1155
1156 The extension is enabled with the flag :ghc-flag:`-XTransformListComp`.
1157
1158 Here is an example:
1159
1160 ::
1161
1162     employees = [ ("Simon", "MS", 80)
1163                 , ("Erik", "MS", 100)
1164                 , ("Phil", "Ed", 40)
1165                 , ("Gordon", "Ed", 45)
1166                 , ("Paul", "Yale", 60) ]
1167
1168     output = [ (the dept, sum salary)
1169              | (name, dept, salary) <- employees
1170              , then group by dept using groupWith
1171              , then sortWith by (sum salary)
1172              , then take 5 ]
1173
1174 In this example, the list ``output`` would take on the value:
1175
1176 ::
1177
1178     [("Yale", 60), ("Ed", 85), ("MS", 180)]
1179
1180 There are three new keywords: ``group``, ``by``, and ``using``. (The
1181 functions ``sortWith`` and ``groupWith`` are not keywords; they are
1182 ordinary functions that are exported by ``GHC.Exts``.)
1183
1184 There are five new forms of comprehension qualifier, all introduced by
1185 the (existing) keyword ``then``:
1186
1187 -  ::
1188
1189        then f
1190
1191    This statement requires that
1192    f
1193    have the type
1194    forall a. [a] -> [a]
1195    . You can see an example of its use in the motivating example, as
1196    this form is used to apply
1197    take 5
1198    .
1199 -  ::
1200
1201        then f by e
1202
1203    This form is similar to the previous one, but allows you to create a
1204    function which will be passed as the first argument to f. As a
1205    consequence f must have the type
1206    ``forall a. (a -> t) -> [a] -> [a]``. As you can see from the type,
1207    this function lets f "project out" some information from the elements
1208    of the list it is transforming.
1209
1210    An example is shown in the opening example, where ``sortWith`` is
1211    supplied with a function that lets it find out the ``sum salary`` for
1212    any item in the list comprehension it transforms.
1213
1214 -  ::
1215
1216        then group by e using f
1217
1218    This is the most general of the grouping-type statements. In this
1219    form, f is required to have type
1220    ``forall a. (a -> t) -> [a] -> [[a]]``. As with the ``then f by e``
1221    case above, the first argument is a function supplied to f by the
1222    compiler which lets it compute e on every element of the list being
1223    transformed. However, unlike the non-grouping case, f additionally
1224    partitions the list into a number of sublists: this means that at
1225    every point after this statement, binders occurring before it in the
1226    comprehension refer to *lists* of possible values, not single values.
1227    To help understand this, let's look at an example:
1228
1229    ::
1230
1231        -- This works similarly to groupWith in GHC.Exts, but doesn't sort its input first
1232        groupRuns :: Eq b => (a -> b) -> [a] -> [[a]]
1233        groupRuns f = groupBy (\x y -> f x == f y)
1234
1235        output = [ (the x, y)
1236        | x <- ([1..3] ++ [1..2])
1237        , y <- [4..6]
1238        , then group by x using groupRuns ]
1239
1240    This results in the variable ``output`` taking on the value below:
1241
1242    ::
1243
1244        [(1, [4, 5, 6]), (2, [4, 5, 6]), (3, [4, 5, 6]), (1, [4, 5, 6]), (2, [4, 5, 6])]
1245
1246    Note that we have used the ``the`` function to change the type of x
1247    from a list to its original numeric type. The variable y, in
1248    contrast, is left unchanged from the list form introduced by the
1249    grouping.
1250
1251 -  ::
1252
1253        then group using f
1254
1255    With this form of the group statement, f is required to simply have
1256    the type ``forall a. [a] -> [[a]]``, which will be used to group up
1257    the comprehension so far directly. An example of this form is as
1258    follows:
1259
1260    ::
1261
1262        output = [ x
1263        | y <- [1..5]
1264        , x <- "hello"
1265        , then group using inits]
1266
1267    This will yield a list containing every prefix of the word "hello"
1268    written out 5 times:
1269
1270    ::
1271
1272        ["","h","he","hel","hell","hello","helloh","hellohe","hellohel","hellohell","hellohello","hellohelloh",...]
1273
1274 .. _monad-comprehensions:
1275
1276 Monad comprehensions
1277 --------------------
1278
1279 .. index::
1280    single: monad comprehensions
1281
1282 .. ghc-flag:: -XMonadComprehensions
1283
1284     :since: 7.2
1285
1286     Enable list comprehension syntax for arbitrary monads.
1287
1288 Monad comprehensions generalise the list comprehension notation,
1289 including parallel comprehensions (:ref:`parallel-list-comprehensions`)
1290 and transform comprehensions (:ref:`generalised-list-comprehensions`) to
1291 work for any monad.
1292
1293 Monad comprehensions support:
1294
1295 -  Bindings: ::
1296
1297        [ x + y | x <- Just 1, y <- Just 2 ]
1298
1299    Bindings are translated with the ``(>>=)`` and ``return`` functions
1300    to the usual do-notation: ::
1301
1302        do x <- Just 1
1303           y <- Just 2
1304           return (x+y)
1305
1306 -  Guards: ::
1307
1308        [ x | x <- [1..10], x <= 5 ]
1309
1310    Guards are translated with the ``guard`` function, which requires a
1311    ``MonadPlus`` instance: ::
1312
1313        do x <- [1..10]
1314           guard (x <= 5)
1315           return x
1316
1317 -  Transform statements (as with :ghc-flag:`-XTransformListComp`): ::
1318
1319        [ x+y | x <- [1..10], y <- [1..x], then take 2 ]
1320
1321    This translates to: ::
1322
1323        do (x,y) <- take 2 (do x <- [1..10]
1324                               y <- [1..x]
1325                               return (x,y))
1326           return (x+y)
1327
1328 -  Group statements (as with :ghc-flag:`-XTransformListComp`):
1329
1330    ::
1331
1332        [ x | x <- [1,1,2,2,3], then group by x using GHC.Exts.groupWith ]
1333        [ x | x <- [1,1,2,2,3], then group using myGroup ]
1334
1335 -  Parallel statements (as with :ghc-flag:`-XParallelListComp`):
1336
1337    ::
1338
1339        [ (x+y) | x <- [1..10]
1340                | y <- [11..20]
1341                ]
1342
1343    Parallel statements are translated using the ``mzip`` function, which
1344    requires a ``MonadZip`` instance defined in
1345    :base-ref:`Control.Monad.Zip.`:
1346
1347    ::
1348
1349        do (x,y) <- mzip (do x <- [1..10]
1350                             return x)
1351                         (do y <- [11..20]
1352                             return y)
1353           return (x+y)
1354
1355 All these features are enabled by default if the :ghc-flag:`-XMonadComprehensions`
1356 extension is enabled. The types and more detailed examples on how to use
1357 comprehensions are explained in the previous chapters
1358 :ref:`generalised-list-comprehensions` and
1359 :ref:`parallel-list-comprehensions`. In general you just have to replace
1360 the type ``[a]`` with the type ``Monad m => m a`` for monad
1361 comprehensions.
1362
1363 .. note::
1364     Even though most of these examples are using the list monad, monad
1365     comprehensions work for any monad. The ``base`` package offers all
1366     necessary instances for lists, which make :ghc-flag:`-XMonadComprehensions`
1367     backward compatible to built-in, transform and parallel list
1368     comprehensions.
1369
1370 More formally, the desugaring is as follows. We write ``D[ e | Q]`` to
1371 mean the desugaring of the monad comprehension ``[ e | Q]``:
1372
1373 .. code-block:: none
1374
1375     Expressions: e
1376     Declarations: d
1377     Lists of qualifiers: Q,R,S
1378
1379     -- Basic forms
1380     D[ e | ]               = return e
1381     D[ e | p <- e, Q ]  = e >>= \p -> D[ e | Q ]
1382     D[ e | e, Q ]          = guard e >> \p -> D[ e | Q ]
1383     D[ e | let d, Q ]      = let d in D[ e | Q ]
1384
1385     -- Parallel comprehensions (iterate for multiple parallel branches)
1386     D[ e | (Q | R), S ]    = mzip D[ Qv | Q ] D[ Rv | R ] >>= \(Qv,Rv) -> D[ e | S ]
1387
1388     -- Transform comprehensions
1389     D[ e | Q then f, R ]                  = f D[ Qv | Q ] >>= \Qv -> D[ e | R ]
1390
1391     D[ e | Q then f by b, R ]             = f (\Qv -> b) D[ Qv | Q ] >>= \Qv -> D[ e | R ]
1392
1393     D[ e | Q then group using f, R ]      = f D[ Qv | Q ] >>= \ys ->
1394                                             case (fmap selQv1 ys, ..., fmap selQvn ys) of
1395                                              Qv -> D[ e | R ]
1396
1397     D[ e | Q then group by b using f, R ] = f (\Qv -> b) D[ Qv | Q ] >>= \ys ->
1398                                             case (fmap selQv1 ys, ..., fmap selQvn ys) of
1399                                                Qv -> D[ e | R ]
1400
1401     where  Qv is the tuple of variables bound by Q (and used subsequently)
1402            selQvi is a selector mapping Qv to the ith component of Qv
1403
1404     Operator     Standard binding       Expected type
1405     --------------------------------------------------------------------
1406     return       GHC.Base               t1 -> m t2
1407     (>>=)        GHC.Base               m1 t1 -> (t2 -> m2 t3) -> m3 t3
1408     (>>)         GHC.Base               m1 t1 -> m2 t2         -> m3 t3
1409     guard        Control.Monad          t1 -> m t2
1410     fmap         GHC.Base               forall a b. (a->b) -> n a -> n b
1411     mzip         Control.Monad.Zip      forall a b. m a -> m b -> m (a,b)
1412
1413 The comprehension should typecheck when its desugaring would typecheck,
1414 except that (as discussed in :ref:`generalised-list-comprehensions`) in the
1415 "then ``f``" and "then group using ``f``" clauses, when the "by ``b``" qualifier
1416 is omitted, argument ``f`` should have a polymorphic type. In particular, "then
1417 ``Data.List.sort``" and "then group using ``Data.List.group``" are
1418 insufficiently polymorphic.
1419
1420 Monad comprehensions support rebindable syntax
1421 (:ref:`rebindable-syntax`). Without rebindable syntax, the operators
1422 from the "standard binding" module are used; with rebindable syntax, the
1423 operators are looked up in the current lexical scope. For example,
1424 parallel comprehensions will be typechecked and desugared using whatever
1425 "``mzip``" is in scope.
1426
1427 The rebindable operators must have the "Expected type" given in the
1428 table above. These types are surprisingly general. For example, you can
1429 use a bind operator with the type
1430
1431 ::
1432
1433     (>>=) :: T x y a -> (a -> T y z b) -> T x z b
1434
1435 In the case of transform comprehensions, notice that the groups are
1436 parameterised over some arbitrary type ``n`` (provided it has an
1437 ``fmap``, as well as the comprehension being over an arbitrary monad.
1438
1439 .. _monadfail-desugaring:
1440
1441 New monadic failure desugaring mechanism
1442 ----------------------------------------
1443
1444 .. ghc-flag:: -XMonadFailDesugaring
1445
1446     :since: 8.0.1
1447
1448     Use the ``MonadFail.fail`` instead of the legacy ``Monad.fail`` function
1449     when desugaring refutable patterns in ``do`` blocks.
1450
1451 The ``-XMonadFailDesugaring`` extension switches the desugaring of
1452 ``do``-blocks to use ``MonadFail.fail`` instead of ``Monad.fail``. This will
1453 eventually be the default behaviour in a future GHC release, under the
1454 `MonadFail Proposal (MFP)
1455 <https://prime.haskell.org/wiki/Libraries/Proposals/MonadFail>`__.
1456
1457 This extension is temporary, and will be deprecated in a future release. It is
1458 included so that library authors have a hard check for whether their code
1459 will work with future GHC versions.
1460
1461 .. _rebindable-syntax:
1462
1463 Rebindable syntax and the implicit Prelude import
1464 -------------------------------------------------
1465
1466 .. ghc-flag:: -XNoImplicitPrelude
1467
1468     Don't import ``Prelude`` by default.
1469
1470 GHC normally imports ``Prelude.hi`` files for
1471 you. If you'd rather it didn't, then give it a ``-XNoImplicitPrelude``
1472 option. The idea is that you can then import a Prelude of your own. (But
1473 don't call it ``Prelude``; the Haskell module namespace is flat, and you
1474 must not conflict with any Prelude module.)
1475
1476 .. ghc-flag:: -XRebindableSyntax
1477
1478     :implies: :ghc-flag:`-XNoImplicitPrelude`
1479     :since: 7.0.1
1480
1481     Enable rebinding of a variety of usually-built-in operations.
1482
1483 Suppose you are importing a Prelude of your own in order to define your
1484 own numeric class hierarchy. It completely defeats that purpose if the
1485 literal "1" means "``Prelude.fromInteger 1``", which is what the Haskell
1486 Report specifies. So the :ghc-flag:`-XRebindableSyntax` flag causes the
1487 following pieces of built-in syntax to refer to *whatever is in scope*,
1488 not the Prelude versions:
1489
1490 -  An integer literal ``368`` means "``fromInteger (368::Integer)``",
1491    rather than "``Prelude.fromInteger (368::Integer)``".
1492
1493 -  Fractional literals are handed in just the same way, except that the
1494    translation is ``fromRational (3.68::Rational)``.
1495
1496 -  The equality test in an overloaded numeric pattern uses whatever
1497    ``(==)`` is in scope.
1498
1499 -  The subtraction operation, and the greater-than-or-equal test, in
1500    ``n+k`` patterns use whatever ``(-)`` and ``(>=)`` are in scope.
1501
1502 -  Negation (e.g. "``- (f x)``") means "``negate (f x)``", both in
1503    numeric patterns, and expressions.
1504
1505 -  Conditionals (e.g. "``if`` e1 ``then`` e2 ``else`` e3") means
1506    "``ifThenElse`` e1 e2 e3". However ``case`` expressions are
1507    unaffected.
1508
1509 -  "Do" notation is translated using whatever functions ``(>>=)``,
1510    ``(>>)``, and ``fail``, are in scope (not the Prelude versions). List
1511    comprehensions, ``mdo`` (:ref:`recursive-do-notation`), and parallel
1512    array comprehensions, are unaffected.
1513
1514 -  Arrow notation (see :ref:`arrow-notation`) uses whatever ``arr``,
1515    ``(>>>)``, ``first``, ``app``, ``(|||)`` and ``loop`` functions are
1516    in scope. But unlike the other constructs, the types of these
1517    functions must match the Prelude types very closely. Details are in
1518    flux; if you want to use this, ask!
1519
1520 -  List notation, such as ``[x,y]`` or ``[m..n]`` can also be treated
1521    via rebindable syntax if you use `-XOverloadedLists`;
1522    see :ref:`overloaded-lists`.
1523
1524 -  An overloaded label "``#foo``" means "``fromLabel @"foo"``", rather than
1525    "``GHC.OverloadedLabels.fromLabel @"foo"``" (see :ref:`overloaded-labels`).
1526
1527 :ghc-flag:`-XRebindableSyntax` implies :ghc-flag:`-XNoImplicitPrelude`.
1528
1529 In all cases (apart from arrow notation), the static semantics should be
1530 that of the desugared form, even if that is a little unexpected. For
1531 example, the static semantics of the literal ``368`` is exactly that of
1532 ``fromInteger (368::Integer)``; it's fine for ``fromInteger`` to have
1533 any of the types: ::
1534
1535     fromInteger :: Integer -> Integer
1536     fromInteger :: forall a. Foo a => Integer -> a
1537     fromInteger :: Num a => a -> Integer
1538     fromInteger :: Integer -> Bool -> Bool
1539
1540 Be warned: this is an experimental facility, with fewer checks than
1541 usual. Use ``-dcore-lint`` to typecheck the desugared program. If Core
1542 Lint is happy you should be all right.
1543
1544 Things unaffected by :ghc-flag:`-XRebindableSyntax`
1545 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1546
1547 :ghc-flag:`-XRebindableSyntax` does not apply to any code generated from a
1548 ``deriving`` clause or declaration. To see why, consider the following code: ::
1549
1550     {-# LANGUAGE RebindableSyntax, OverloadedStrings #-}
1551     newtype Text = Text String
1552
1553     fromString :: String -> Text
1554     fromString = Text
1555
1556     data Foo = Foo deriving Show
1557
1558 This will generate code to the effect of: ::
1559
1560     instance Show Foo where
1561       showsPrec _ Foo = showString "Foo"
1562
1563 But because :ghc-flag:`-XRebindableSyntax` and :ghc-flag:`-XOverloadedStrings`
1564 are enabled, the ``"Foo"`` string literal would now be of type ``Text``, not
1565 ``String``, which ``showString`` doesn't accept! This causes the generated
1566 ``Show`` instance to fail to typecheck. It's hard to imagine any scenario where
1567 it would be desirable have :ghc-flag:`-XRebindableSyntax` behavior within
1568 derived code, so GHC simply ignores :ghc-flag:`-XRebindableSyntax` entirely
1569 when checking derived code.
1570
1571 .. _postfix-operators:
1572
1573 Postfix operators
1574 -----------------
1575
1576 .. ghc-flag:: -XPostfixOperators
1577
1578     Allow the use of post-fix operators
1579
1580 The :ghc-flag:`-XPostfixOperators` flag enables a small extension to the syntax
1581 of left operator sections, which allows you to define postfix operators.
1582 The extension is this: the left section ::
1583
1584       (e !)
1585
1586 is equivalent (from the point of view of both type checking and
1587 execution) to the expression ::
1588
1589       ((!) e)
1590
1591 (for any expression ``e`` and operator ``(!)``. The strict Haskell 98
1592 interpretation is that the section is equivalent to ::
1593
1594       (\y -> (!) e y)
1595
1596 That is, the operator must be a function of two arguments. GHC allows it
1597 to take only one argument, and that in turn allows you to write the
1598 function postfix.
1599
1600 The extension does not extend to the left-hand side of function
1601 definitions; you must define such a function in prefix form.
1602
1603 .. _tuple-sections:
1604
1605 Tuple sections
1606 --------------
1607
1608 .. ghc-flag:: -XTupleSections
1609
1610     :since: 6.12
1611
1612     Allow the use of tuple section syntax
1613
1614 The :ghc-flag:`-XTupleSections` flag enables partially applied
1615 tuple constructors. For example, the following program ::
1616
1617       (, True)
1618
1619 is considered to be an alternative notation for the more unwieldy
1620 alternative ::
1621
1622       \x -> (x, True)
1623
1624 You can omit any combination of arguments to the tuple, as in the
1625 following ::
1626
1627       (, "I", , , "Love", , 1337)
1628
1629 which translates to ::
1630
1631       \a b c d -> (a, "I", b, c, "Love", d, 1337)
1632
1633 If you have `unboxed tuples <#unboxed-tuples>`__ enabled, tuple sections
1634 will also be available for them, like so ::
1635
1636       (# , True #)
1637
1638 Because there is no unboxed unit tuple, the following expression ::
1639
1640       (# #)
1641
1642 continues to stand for the unboxed singleton tuple data constructor.
1643
1644 .. _lambda-case:
1645
1646 Lambda-case
1647 -----------
1648
1649 .. ghc-flag:: -XLambdaCase
1650
1651     :since: 7.6.1
1652
1653     Allow the use of lambda-case syntax.
1654
1655 The :ghc-flag:`-XLambdaCase` flag enables expressions of the form ::
1656
1657       \case { p1 -> e1; ...; pN -> eN }
1658
1659 which is equivalent to ::
1660
1661       \freshName -> case freshName of { p1 -> e1; ...; pN -> eN }
1662
1663 Note that ``\case`` starts a layout, so you can write ::
1664
1665       \case
1666         p1 -> e1
1667         ...
1668         pN -> eN
1669
1670 .. _empty-case:
1671
1672 Empty case alternatives
1673 -----------------------
1674
1675 .. ghc-flag:: -XEmptyCase
1676
1677     :since: 7.8.1
1678
1679     Allow empty case expressions.
1680
1681 The :ghc-flag:`-XEmptyCase` flag enables case expressions, or lambda-case
1682 expressions, that have no alternatives, thus: ::
1683
1684     case e of { }   -- No alternatives
1685
1686 or ::
1687
1688     \case { }       -- -XLambdaCase is also required
1689
1690 This can be useful when you know that the expression being scrutinised
1691 has no non-bottom values. For example:
1692
1693 ::
1694
1695       data Void
1696       f :: Void -> Int
1697       f x = case x of { }
1698
1699 With dependently-typed features it is more useful (see :ghc-ticket:`2431`). For
1700 example, consider these two candidate definitions of ``absurd``:
1701
1702 ::
1703
1704     data a :~: b where
1705       Refl :: a :~: a
1706
1707     absurd :: True :~: False -> a
1708     absurd x = error "absurd"    -- (A)
1709     absurd x = case x of {}      -- (B)
1710
1711 We much prefer (B). Why? Because GHC can figure out that
1712 ``(True :~: False)`` is an empty type. So (B) has no partiality and GHC
1713 is able to compile with :ghc-flag:`-Wincomplete-patterns` and
1714 :ghc-flag:`-Werror`. On the other hand (A) looks dangerous, and GHC doesn't
1715 check to make sure that, in fact, the function can never get called.
1716
1717 .. _multi-way-if:
1718
1719 Multi-way if-expressions
1720 ------------------------
1721
1722 .. ghc-flag:: -XMultiWayIf
1723
1724     :since: 7.6.1
1725
1726     Allow the use of multi-way-``if`` syntax.
1727
1728 With :ghc-flag:`-XMultiWayIf` flag GHC accepts conditional expressions with
1729 multiple branches: ::
1730
1731       if | guard1 -> expr1
1732          | ...
1733          | guardN -> exprN
1734
1735 which is roughly equivalent to ::
1736
1737       case () of
1738         _ | guard1 -> expr1
1739         ...
1740         _ | guardN -> exprN
1741
1742 Multi-way if expressions introduce a new layout context. So the example
1743 above is equivalent to: ::
1744
1745       if { | guard1 -> expr1
1746          ; | ...
1747          ; | guardN -> exprN
1748          }
1749
1750 The following behaves as expected: ::
1751
1752       if | guard1 -> if | guard2 -> expr2
1753                         | guard3 -> expr3
1754          | guard4 -> expr4
1755
1756 because layout translates it as ::
1757
1758       if { | guard1 -> if { | guard2 -> expr2
1759                           ; | guard3 -> expr3
1760                           }
1761          ; | guard4 -> expr4
1762          }
1763
1764 Layout with multi-way if works in the same way as other layout contexts,
1765 except that the semi-colons between guards in a multi-way if are
1766 optional. So it is not necessary to line up all the guards at the same
1767 column; this is consistent with the way guards work in function
1768 definitions and case expressions.
1769
1770 .. _local-fixity-declarations:
1771
1772 Local Fixity Declarations
1773 -------------------------
1774
1775 A careful reading of the Haskell 98 Report reveals that fixity
1776 declarations (``infix``, ``infixl``, and ``infixr``) are permitted to
1777 appear inside local bindings such those introduced by ``let`` and
1778 ``where``. However, the Haskell Report does not specify the semantics of
1779 such bindings very precisely.
1780
1781 In GHC, a fixity declaration may accompany a local binding: ::
1782
1783     let f = ...
1784         infixr 3 `f`
1785     in
1786         ...
1787
1788 and the fixity declaration applies wherever the binding is in scope. For
1789 example, in a ``let``, it applies in the right-hand sides of other
1790 ``let``-bindings and the body of the ``let``\ C. Or, in recursive ``do``
1791 expressions (:ref:`recursive-do-notation`), the local fixity
1792 declarations of a ``let`` statement scope over other statements in the
1793 group, just as the bound name does.
1794
1795 Moreover, a local fixity declaration *must* accompany a local binding
1796 of that name: it is not possible to revise the fixity of name bound
1797 elsewhere, as in ::
1798
1799     let infixr 9 $ in ...
1800
1801 Because local fixity declarations are technically Haskell 98, no flag is
1802 necessary to enable them.
1803
1804 .. _package-imports:
1805
1806 Import and export extensions
1807 ----------------------------
1808
1809 Hiding things the imported module doesn't export
1810 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1811
1812 Technically in Haskell 2010 this is illegal: ::
1813
1814     module A( f ) where
1815       f = True
1816
1817     module B where
1818       import A hiding( g )  -- A does not export g
1819       g = f
1820
1821 The ``import A hiding( g )`` in module ``B`` is technically an error
1822 (`Haskell Report,
1823 5.3.1 <http://www.haskell.org/onlinereport/haskell2010/haskellch5.html#x11-1020005.3.1>`__)
1824 because ``A`` does not export ``g``. However GHC allows it, in the
1825 interests of supporting backward compatibility; for example, a newer
1826 version of ``A`` might export ``g``, and you want ``B`` to work in
1827 either case.
1828
1829 The warning :ghc-flag:`-Wdodgy-imports`, which is off by default but included
1830 with :ghc-flag:`-W`, warns if you hide something that the imported module does
1831 not export.
1832
1833 .. _package-qualified-imports:
1834
1835 Package-qualified imports
1836 ~~~~~~~~~~~~~~~~~~~~~~~~~
1837
1838 .. ghc-flag:: -XPackageImports
1839
1840     Allow the use of package-qualified ``import`` syntax.
1841
1842 With the :ghc-flag:`-XPackageImports` flag, GHC allows import declarations to be
1843 qualified by the package name that the module is intended to be imported
1844 from. For example: ::
1845
1846     import "network" Network.Socket
1847
1848 would import the module ``Network.Socket`` from the package ``network``
1849 (any version). This may be used to disambiguate an import when the same
1850 module is available from multiple packages, or is present in both the
1851 current package being built and an external package.
1852
1853 The special package name ``this`` can be used to refer to the current
1854 package being built.
1855
1856 .. note::
1857    You probably don't need to use this feature, it was added mainly so that we
1858    can build backwards-compatible versions of packages when APIs change. It can
1859    lead to fragile dependencies in the common case: modules occasionally move
1860    from one package to another, rendering any package-qualified imports broken.
1861    See also :ref:`package-thinning-and-renaming` for an alternative way of
1862    disambiguating between module names.
1863
1864 .. _safe-imports-ext:
1865
1866 Safe imports
1867 ~~~~~~~~~~~~
1868
1869 .. ghc-flag:: -XSafe
1870               -XTrustworthy
1871               -XUnsafe
1872     :noindex:
1873
1874     :since: 7.2
1875
1876     Declare the Safe Haskell state of the current module.
1877
1878 With the :ghc-flag:`-XSafe`, :ghc-flag:`-XTrustworthy` and :ghc-flag:`-XUnsafe`
1879 language flags, GHC extends the import declaration syntax to take an optional
1880 ``safe`` keyword after the ``import`` keyword. This feature is part of the Safe
1881 Haskell GHC extension. For example: ::
1882
1883     import safe qualified Network.Socket as NS
1884
1885 would import the module ``Network.Socket`` with compilation only
1886 succeeding if ``Network.Socket`` can be safely imported. For a description of
1887 when a import is considered safe see :ref:`safe-haskell`.
1888
1889 .. _explicit-namespaces:
1890
1891 Explicit namespaces in import/export
1892 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1893
1894 .. ghc-flag:: -XExplicitNamespaces
1895
1896     :since: 7.6.1
1897
1898     Enable use of explicit namespaces in module export lists.
1899
1900 In an import or export list, such as ::
1901
1902       module M( f, (++) ) where ...
1903         import N( f, (++) )
1904         ...
1905
1906 the entities ``f`` and ``(++)`` are *values*. However, with type
1907 operators (:ref:`type-operators`) it becomes possible to declare
1908 ``(++)`` as a *type constructor*. In that case, how would you export or
1909 import it?
1910
1911 The :ghc-flag:`-XExplicitNamespaces` extension allows you to prefix the name of
1912 a type constructor in an import or export list with "``type``" to
1913 disambiguate this case, thus: ::
1914
1915       module M( f, type (++) ) where ...
1916         import N( f, type (++) )
1917         ...
1918       module N( f, type (++) ) where
1919         data family a ++ b = L a | R b
1920
1921 The extension :ghc-flag:`-XExplicitNamespaces` is implied by
1922 :ghc-flag:`-XTypeOperators` and (for some reason) by :ghc-flag:`-XTypeFamilies`.
1923
1924 In addition, with :ghc-flag:`-XPatternSynonyms` you can prefix the name of a
1925 data constructor in an import or export list with the keyword
1926 ``pattern``, to allow the import or export of a data constructor without
1927 its parent type constructor (see :ref:`patsyn-impexp`).
1928
1929 .. _syntax-stolen:
1930
1931 Summary of stolen syntax
1932 ------------------------
1933
1934 Turning on an option that enables special syntax *might* cause working
1935 Haskell 98 code to fail to compile, perhaps because it uses a variable
1936 name which has become a reserved word. This section lists the syntax
1937 that is "stolen" by language extensions. We use notation and nonterminal
1938 names from the Haskell 98 lexical syntax (see the Haskell 98 Report). We
1939 only list syntax changes here that might affect existing working
1940 programs (i.e. "stolen" syntax). Many of these extensions will also
1941 enable new context-free syntax, but in all cases programs written to use
1942 the new syntax would not be compilable without the option enabled.
1943
1944 There are two classes of special syntax:
1945
1946 -  New reserved words and symbols: character sequences which are no
1947    longer available for use as identifiers in the program.
1948
1949 -  Other special syntax: sequences of characters that have a different
1950    meaning when this particular option is turned on.
1951
1952 The following syntax is stolen:
1953
1954 ``forall``
1955     .. index::
1956        single: forall
1957
1958     Stolen (in types) by: :ghc-flag:`-XExplicitForAll`, and hence by
1959     :ghc-flag:`-XScopedTypeVariables`, :ghc-flag:`-XLiberalTypeSynonyms`,
1960     :ghc-flag:`-XRankNTypes`, :ghc-flag:`-XExistentialQuantification`
1961
1962 ``mdo``
1963     .. index::
1964        single: mdo
1965
1966     Stolen by: :ghc-flag:`-XRecursiveDo`
1967
1968 ``foreign``
1969     .. index::
1970        single: foreign
1971
1972     Stolen by: :ghc-flag:`-XForeignFunctionInterface`
1973
1974 ``rec``, ``proc``, ``-<``, ``>-``, ``-<<``, ``>>-``, ``(|``, ``|)``
1975     .. index::
1976        single: proc
1977
1978     Stolen by: :ghc-flag:`-XArrows`
1979
1980 ``?varid``
1981     .. index::
1982        single: implicit parameters
1983
1984     Stolen by: :ghc-flag:`-XImplicitParams`
1985
1986 ``[|``, ``[e|``, ``[p|``, ``[d|``, ``[t|``, ``[||``, ``[e||``
1987     .. index::
1988        single: Quasi-quotes
1989
1990     Stolen by: :ghc-flag:`-XQuasiQuotes`. Moreover, this introduces an ambiguity
1991     with list comprehension syntax. See the
1992     :ref:`discussion on quasi-quoting <quasi-quotes-list-comprehension-ambiguity>`
1993     for details.
1994
1995 ``$(``, ``$$(``, ``$varid``, ``$$varid``
1996     .. index::
1997        single: Template Haskell
1998
1999     Stolen by: :ghc-flag:`-XTemplateHaskell`
2000
2001 ``[varid|``
2002     .. index::
2003        single: quasi-quotation
2004
2005     Stolen by: :ghc-flag:`-XQuasiQuotes`
2006
2007 ⟨varid⟩, ``#``\ ⟨char⟩, ``#``, ⟨string⟩, ``#``, ⟨integer⟩, ``#``, ⟨float⟩, ``#``, ⟨float⟩, ``##``
2008     Stolen by: :ghc-flag:`-XMagicHash`
2009
2010 ``(#``, ``#)``
2011     Stolen by: :ghc-flag:`-XUnboxedTuples`
2012
2013 ⟨varid⟩, ``!``, ⟨varid⟩
2014     Stolen by: :ghc-flag:`-XBangPatterns`
2015
2016 ``pattern``
2017     Stolen by: :ghc-flag:`-XPatternSynonyms`
2018
2019 .. _data-type-extensions:
2020
2021 Extensions to data types and type synonyms
2022 ==========================================
2023
2024 .. _nullary-types:
2025
2026 Data types with no constructors
2027 -------------------------------
2028
2029 .. ghc-flag:: -XEmptyDataDecls
2030
2031     Allow definition of empty ``data`` types.
2032
2033 With the :ghc-flag:`-XEmptyDataDecls` flag (or equivalent ``LANGUAGE`` pragma), GHC
2034 lets you declare a data type with no constructors. For example: ::
2035
2036       data S      -- S :: *
2037       data T a    -- T :: * -> *
2038
2039 Syntactically, the declaration lacks the "= constrs" part. The type can
2040 be parameterised over types of any kind, but if the kind is not ``*``
2041 then an explicit kind annotation must be used (see :ref:`kinding`).
2042
2043 Such data types have only one value, namely bottom. Nevertheless, they
2044 can be useful when defining "phantom types".
2045
2046 .. _datatype-contexts:
2047
2048 Data type contexts
2049 ------------------
2050
2051 .. ghc-flag:: -XDatatypeContexts
2052
2053     :since: 7.0.1
2054
2055     Allow contexts on ``data`` types.
2056
2057 Haskell allows datatypes to be given contexts, e.g. ::
2058
2059     data Eq a => Set a = NilSet | ConsSet a (Set a)
2060
2061 give constructors with types: ::
2062
2063     NilSet :: Set a
2064     ConsSet :: Eq a => a -> Set a -> Set a
2065
2066 This is widely considered a misfeature, and is going to be removed from
2067 the language. In GHC, it is controlled by the deprecated extension
2068 ``DatatypeContexts``.
2069
2070 .. _infix-tycons:
2071
2072 Infix type constructors, classes, and type variables
2073 ----------------------------------------------------
2074
2075 GHC allows type constructors, classes, and type variables to be
2076 operators, and to be written infix, very much like expressions. More
2077 specifically:
2078
2079 -  A type constructor or class can be any non-reserved operator.
2080    Symbols used in types are always like capitalized identifiers; they
2081    are never variables. Note that this is different from the lexical
2082    syntax of data constructors, which are required to begin with a
2083    ``:``.
2084
2085 -  Data type and type-synonym declarations can be written infix,
2086    parenthesised if you want further arguments. E.g. ::
2087
2088          data a :*: b = Foo a b
2089          type a :+: b = Either a b
2090          class a :=: b where ...
2091
2092          data (a :**: b) x = Baz a b x
2093          type (a :++: b) y = Either (a,b) y
2094
2095 -  Types, and class constraints, can be written infix. For example ::
2096
2097          x :: Int :*: Bool
2098          f :: (a :=: b) => a -> b
2099
2100 -  Back-quotes work as for expressions, both for type constructors and
2101    type variables; e.g. ``Int `Either` Bool``, or ``Int `a` Bool``.
2102    Similarly, parentheses work the same; e.g. ``(:*:) Int Bool``.
2103
2104 -  Fixities may be declared for type constructors, or classes, just as
2105    for data constructors. However, one cannot distinguish between the
2106    two in a fixity declaration; a fixity declaration sets the fixity for
2107    a data constructor and the corresponding type constructor. For
2108    example: ::
2109
2110          infixl 7 T, :*:
2111
2112    sets the fixity for both type constructor ``T`` and data constructor
2113    ``T``, and similarly for ``:*:``. ``Int `a` Bool``.
2114
2115 -  Function arrow is ``infixr`` with fixity 0 (this might change; it's
2116    not clear what it should be).
2117
2118 .. _type-operators:
2119
2120 Type operators
2121 --------------
2122
2123 .. ghc-flag:: -XTypeOperators
2124
2125     :implies: :ghc-flag:`-XExplicitNamespaces`
2126
2127     Allow the use and definition of types with operator names.
2128
2129 In types, an operator symbol like ``(+)`` is normally treated as a type
2130 *variable*, just like ``a``. Thus in Haskell 98 you can say
2131
2132 ::
2133
2134     type T (+) = ((+), (+))
2135     -- Just like: type T a = (a,a)
2136
2137     f :: T Int -> Int
2138     f (x,y)= x
2139
2140 As you can see, using operators in this way is not very useful, and
2141 Haskell 98 does not even allow you to write them infix.
2142
2143 The language :ghc-flag:`-XTypeOperators` changes this behaviour:
2144
2145 -  Operator symbols become type *constructors* rather than type
2146    *variables*.
2147
2148 -  Operator symbols in types can be written infix, both in definitions
2149    and uses. For example: ::
2150
2151        data a + b = Plus a b
2152        type Foo = Int + Bool
2153
2154 -  There is now some potential ambiguity in import and export lists; for
2155    example if you write ``import M( (+) )`` do you mean the *function*
2156    ``(+)`` or the *type constructor* ``(+)``? The default is the former,
2157    but with :ghc-flag:`-XExplicitNamespaces` (which is implied by
2158    :ghc-flag:`-XTypeOperators`) GHC allows you to specify the latter by
2159    preceding it with the keyword ``type``, thus: ::
2160
2161        import M( type (+) )
2162
2163    See :ref:`explicit-namespaces`.
2164
2165 -  The fixity of a type operator may be set using the usual fixity
2166    declarations but, as in :ref:`infix-tycons`, the function and type
2167    constructor share a single fixity.
2168
2169 .. _type-synonyms:
2170
2171 Liberalised type synonyms
2172 -------------------------
2173
2174 .. ghc-flag:: -XLiberalTypeSynonyms
2175
2176     :implies: :ghc-flag:`-XExplicitForAll`
2177
2178     Relax many of the Haskell 98 rules on type synonym definitions.
2179
2180 Type synonyms are like macros at the type level, but Haskell 98 imposes
2181 many rules on individual synonym declarations. With the
2182 :ghc-flag:`-XLiberalTypeSynonyms` extension, GHC does validity checking on types
2183 *only after expanding type synonyms*. That means that GHC can be very
2184 much more liberal about type synonyms than Haskell 98.
2185
2186 -  You can write a ``forall`` (including overloading) in a type synonym,
2187    thus: ::
2188
2189          type Discard a = forall b. Show b => a -> b -> (a, String)
2190
2191          f :: Discard a
2192          f x y = (x, show y)
2193
2194          g :: Discard Int -> (Int,String)    -- A rank-2 type
2195          g f = f 3 True
2196
2197 -  If you also use :ghc-flag:`-XUnboxedTuples`, you can write an unboxed tuple
2198    in a type synonym: ::
2199
2200          type Pr = (# Int, Int #)
2201
2202          h :: Int -> Pr
2203          h x = (# x, x #)
2204
2205 -  You can apply a type synonym to a forall type: ::
2206
2207          type Foo a = a -> a -> Bool
2208
2209          f :: Foo (forall b. b->b)
2210
2211    After expanding the synonym, ``f`` has the legal (in GHC) type: ::
2212
2213          f :: (forall b. b->b) -> (forall b. b->b) -> Bool
2214
2215 -  You can apply a type synonym to a partially applied type synonym: ::
2216
2217          type Generic i o = forall x. i x -> o x
2218          type Id x = x
2219
2220          foo :: Generic Id []
2221
2222    After expanding the synonym, ``foo`` has the legal (in GHC) type: ::
2223
2224          foo :: forall x. x -> [x]
2225
2226 GHC currently does kind checking before expanding synonyms (though even
2227 that could be changed).
2228
2229 After expanding type synonyms, GHC does validity checking on types,
2230 looking for the following malformedness which isn't detected simply by
2231 kind checking:
2232
2233 -  Type constructor applied to a type involving for-alls (if
2234    :ghc-flag:`-XImpredicativeTypes` is off)
2235
2236 -  Partially-applied type synonym.
2237
2238 So, for example, this will be rejected: ::
2239
2240       type Pr = forall a. a
2241
2242       h :: [Pr]
2243       h = ...
2244
2245 because GHC does not allow type constructors applied to for-all types.
2246
2247 .. _existential-quantification:
2248
2249 Existentially quantified data constructors
2250 ------------------------------------------
2251
2252 .. ghc-flag:: -XExistentialQuantification
2253
2254     :implies: :ghc-flag:`-XExplicitForAll`
2255
2256     Allow existentially quantified type variables in types.
2257
2258 The idea of using existential quantification in data type declarations
2259 was suggested by Perry, and implemented in Hope+ (Nigel Perry, *The
2260 Implementation of Practical Functional Programming Languages*, PhD
2261 Thesis, University of London, 1991). It was later formalised by Laufer
2262 and Odersky (*Polymorphic type inference and abstract data types*,
2263 TOPLAS, 16(5), pp. 1411-1430, 1994). It's been in Lennart Augustsson's
2264 ``hbc`` Haskell compiler for several years, and proved very useful.
2265 Here's the idea. Consider the declaration: ::
2266
2267       data Foo = forall a. MkFoo a (a -> Bool)
2268                | Nil
2269
2270 The data type ``Foo`` has two constructors with types: ::
2271
2272       MkFoo :: forall a. a -> (a -> Bool) -> Foo
2273       Nil   :: Foo
2274
2275 Notice that the type variable ``a`` in the type of ``MkFoo`` does not
2276 appear in the data type itself, which is plain ``Foo``. For example, the
2277 following expression is fine: ::
2278
2279       [MkFoo 3 even, MkFoo 'c' isUpper] :: [Foo]
2280
2281 Here, ``(MkFoo 3 even)`` packages an integer with a function ``even``
2282 that maps an integer to ``Bool``; and ``MkFoo 'c'
2283 isUpper`` packages a character with a compatible function. These two
2284 things are each of type ``Foo`` and can be put in a list.
2285
2286 What can we do with a value of type ``Foo``? In particular, what
2287 happens when we pattern-match on ``MkFoo``? ::
2288
2289       f (MkFoo val fn) = ???
2290
2291 Since all we know about ``val`` and ``fn`` is that they are compatible,
2292 the only (useful) thing we can do with them is to apply ``fn`` to
2293 ``val`` to get a boolean. For example: ::
2294
2295       f :: Foo -> Bool
2296       f (MkFoo val fn) = fn val
2297
2298 What this allows us to do is to package heterogeneous values together
2299 with a bunch of functions that manipulate them, and then treat that
2300 collection of packages in a uniform manner. You can express quite a bit
2301 of object-oriented-like programming this way.
2302
2303 .. _existential:
2304
2305 Why existential?
2306 ~~~~~~~~~~~~~~~~
2307
2308 What has this to do with *existential* quantification? Simply that
2309 ``MkFoo`` has the (nearly) isomorphic type ::
2310
2311       MkFoo :: (exists a . (a, a -> Bool)) -> Foo
2312
2313 But Haskell programmers can safely think of the ordinary *universally*
2314 quantified type given above, thereby avoiding adding a new existential
2315 quantification construct.
2316
2317 .. _existential-with-context:
2318
2319 Existentials and type classes
2320 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2321
2322 An easy extension is to allow arbitrary contexts before the constructor.
2323 For example: ::
2324
2325     data Baz = forall a. Eq a => Baz1 a a
2326              | forall b. Show b => Baz2 b (b -> b)
2327
2328 The two constructors have the types you'd expect: ::
2329
2330     Baz1 :: forall a. Eq a => a -> a -> Baz
2331     Baz2 :: forall b. Show b => b -> (b -> b) -> Baz
2332
2333 But when pattern matching on ``Baz1`` the matched values can be compared
2334 for equality, and when pattern matching on ``Baz2`` the first matched
2335 value can be converted to a string (as well as applying the function to
2336 it). So this program is legal: ::
2337
2338       f :: Baz -> String
2339       f (Baz1 p q) | p == q    = "Yes"
2340                    | otherwise = "No"
2341       f (Baz2 v fn)            = show (fn v)
2342
2343 Operationally, in a dictionary-passing implementation, the constructors
2344 ``Baz1`` and ``Baz2`` must store the dictionaries for ``Eq`` and
2345 ``Show`` respectively, and extract it on pattern matching.
2346
2347 .. _existential-records:
2348
2349 Record Constructors
2350 ~~~~~~~~~~~~~~~~~~~
2351
2352 GHC allows existentials to be used with records syntax as well. For
2353 example: ::
2354
2355     data Counter a = forall self. NewCounter
2356         { _this    :: self
2357         , _inc     :: self -> self
2358         , _display :: self -> IO ()
2359         , tag      :: a
2360         }
2361
2362 Here ``tag`` is a public field, with a well-typed selector function
2363 ``tag :: Counter a -> a``. The ``self`` type is hidden from the outside;
2364 any attempt to apply ``_this``, ``_inc`` or ``_display`` as functions
2365 will raise a compile-time error. In other words, *GHC defines a record
2366 selector function only for fields whose type does not mention the
2367 existentially-quantified variables*. (This example used an underscore in
2368 the fields for which record selectors will not be defined, but that is
2369 only programming style; GHC ignores them.)
2370
2371 To make use of these hidden fields, we need to create some helper
2372 functions: ::
2373
2374     inc :: Counter a -> Counter a
2375     inc (NewCounter x i d t) = NewCounter
2376         { _this = i x, _inc = i, _display = d, tag = t }
2377
2378     display :: Counter a -> IO ()
2379     display NewCounter{ _this = x, _display = d } = d x
2380
2381 Now we can define counters with different underlying implementations: ::
2382
2383     counterA :: Counter String
2384     counterA = NewCounter
2385         { _this = 0, _inc = (1+), _display = print, tag = "A" }
2386
2387     counterB :: Counter String
2388     counterB = NewCounter
2389         { _this = "", _inc = ('#':), _display = putStrLn, tag = "B" }
2390
2391     main = do
2392         display (inc counterA)         -- prints "1"
2393         display (inc (inc counterB))   -- prints "##"
2394
2395 Record update syntax is supported for existentials (and GADTs): ::
2396
2397     setTag :: Counter a -> a -> Counter a
2398     setTag obj t = obj{ tag = t }
2399
2400 The rule for record update is this:
2401
2402     the types of the updated fields may mention only the universally-quantified
2403     type variables of the data constructor. For GADTs, the field may mention
2404     only types that appear as a simple type-variable argument in the
2405     constructor's result type.
2406
2407 For example: ::
2408
2409     data T a b where { T1 { f1::a, f2::b, f3::(b,c) } :: T a b } -- c is existential
2410     upd1 t x = t { f1=x }   -- OK:   upd1 :: T a b -> a' -> T a' b
2411     upd2 t x = t { f3=x }   -- BAD   (f3's type mentions c, which is
2412                             --        existentially quantified)
2413
2414     data G a b where { G1 { g1::a, g2::c } :: G a [c] }
2415     upd3 g x = g { g1=x }   -- OK:   upd3 :: G a b -> c -> G c b
2416     upd4 g x = g { g2=x }   -- BAD (f2's type mentions c, which is not a simple
2417                             --      type-variable argument in G1's result type)
2418
2419 Restrictions
2420 ~~~~~~~~~~~~
2421
2422 There are several restrictions on the ways in which existentially-quantified
2423 constructors can be used.
2424
2425 -  When pattern matching, each pattern match introduces a new, distinct,
2426    type for each existential type variable. These types cannot be
2427    unified with any other type, nor can they escape from the scope of
2428    the pattern match. For example, these fragments are incorrect: ::
2429
2430        f1 (MkFoo a f) = a
2431
2432    Here, the type bound by ``MkFoo`` "escapes", because ``a`` is the
2433    result of ``f1``. One way to see why this is wrong is to ask what
2434    type ``f1`` has: ::
2435
2436          f1 :: Foo -> a             -- Weird!
2437
2438    What is this "``a``" in the result type? Clearly we don't mean this: ::
2439
2440          f1 :: forall a. Foo -> a   -- Wrong!
2441
2442    The original program is just plain wrong. Here's another sort of
2443    error ::
2444
2445          f2 (Baz1 a b) (Baz1 p q) = a==q
2446
2447    It's ok to say ``a==b`` or ``p==q``, but ``a==q`` is wrong because it
2448    equates the two distinct types arising from the two ``Baz1``
2449    constructors.
2450
2451 -  You can't pattern-match on an existentially quantified constructor in
2452    a ``let`` or ``where`` group of bindings. So this is illegal: ::
2453
2454          f3 x = a==b where { Baz1 a b = x }
2455
2456    Instead, use a ``case`` expression: ::
2457
2458          f3 x = case x of Baz1 a b -> a==b
2459
2460    In general, you can only pattern-match on an existentially-quantified
2461    constructor in a ``case`` expression or in the patterns of a function
2462    definition. The reason for this restriction is really an
2463    implementation one. Type-checking binding groups is already a
2464    nightmare without existentials complicating the picture. Also an
2465    existential pattern binding at the top level of a module doesn't make
2466    sense, because it's not clear how to prevent the
2467    existentially-quantified type "escaping". So for now, there's a
2468    simple-to-state restriction. We'll see how annoying it is.
2469
2470 -  You can't use existential quantification for ``newtype``
2471    declarations. So this is illegal: ::
2472
2473          newtype T = forall a. Ord a => MkT a
2474
2475    Reason: a value of type ``T`` must be represented as a pair of a
2476    dictionary for ``Ord t`` and a value of type ``t``. That contradicts
2477    the idea that ``newtype`` should have no concrete representation. You
2478    can get just the same efficiency and effect by using ``data`` instead
2479    of ``newtype``. If there is no overloading involved, then there is
2480    more of a case for allowing an existentially-quantified ``newtype``,
2481    because the ``data`` version does carry an implementation cost, but
2482    single-field existentially quantified constructors aren't much use.
2483    So the simple restriction (no existential stuff on ``newtype``)
2484    stands, unless there are convincing reasons to change it.
2485
2486 -  You can't use ``deriving`` to define instances of a data type with
2487    existentially quantified data constructors. Reason: in most cases it
2488    would not make sense. For example:; ::
2489
2490        data T = forall a. MkT [a] deriving( Eq )
2491
2492    To derive ``Eq`` in the standard way we would need to have equality
2493    between the single component of two ``MkT`` constructors: ::
2494
2495        instance Eq T where
2496          (MkT a) == (MkT b) = ???
2497
2498    But ``a`` and ``b`` have distinct types, and so can't be compared.
2499    It's just about possible to imagine examples in which the derived
2500    instance would make sense, but it seems altogether simpler simply to
2501    prohibit such declarations. Define your own instances!
2502
2503 .. _gadt-style:
2504
2505 Declaring data types with explicit constructor signatures
2506 ---------------------------------------------------------
2507
2508 .. ghc-flag:: -XGADTSyntax
2509
2510     :since: 7.2
2511
2512     Allow the use of GADT syntax in data type definitions (but not GADTs
2513     themselves; for this see :ghc-flag:`-XGADTs`)
2514
2515 When the ``GADTSyntax`` extension is enabled, GHC allows you to declare
2516 an algebraic data type by giving the type signatures of constructors
2517 explicitly. For example: ::
2518
2519       data Maybe a where
2520           Nothing :: Maybe a
2521           Just    :: a -> Maybe a
2522
2523 The form is called a "GADT-style declaration" because Generalised
2524 Algebraic Data Types, described in :ref:`gadt`, can only be declared
2525 using this form.
2526
2527 Notice that GADT-style syntax generalises existential types
2528 (:ref:`existential-quantification`). For example, these two declarations
2529 are equivalent: ::
2530
2531       data Foo = forall a. MkFoo a (a -> Bool)
2532       data Foo' where { MKFoo :: a -> (a->Bool) -> Foo' }
2533
2534 Any data type that can be declared in standard Haskell 98 syntax can
2535 also be declared using GADT-style syntax. The choice is largely
2536 stylistic, but GADT-style declarations differ in one important respect:
2537 they treat class constraints on the data constructors differently.
2538 Specifically, if the constructor is given a type-class context, that
2539 context is made available by pattern matching. For example: ::
2540
2541       data Set a where
2542         MkSet :: Eq a => [a] -> Set a
2543
2544       makeSet :: Eq a => [a] -> Set a
2545       makeSet xs = MkSet (nub xs)
2546
2547       insert :: a -> Set a -> Set a
2548       insert a (MkSet as) | a `elem` as = MkSet as
2549                           | otherwise   = MkSet (a:as)
2550
2551 A use of ``MkSet`` as a constructor (e.g. in the definition of
2552 ``makeSet``) gives rise to a ``(Eq a)`` constraint, as you would expect.
2553 The new feature is that pattern-matching on ``MkSet`` (as in the
2554 definition of ``insert``) makes *available* an ``(Eq a)`` context. In
2555 implementation terms, the ``MkSet`` constructor has a hidden field that
2556 stores the ``(Eq a)`` dictionary that is passed to ``MkSet``; so when
2557 pattern-matching that dictionary becomes available for the right-hand
2558 side of the match. In the example, the equality dictionary is used to
2559 satisfy the equality constraint generated by the call to ``elem``, so
2560 that the type of ``insert`` itself has no ``Eq`` constraint.
2561
2562 For example, one possible application is to reify dictionaries: ::
2563
2564        data NumInst a where
2565          MkNumInst :: Num a => NumInst a
2566
2567        intInst :: NumInst Int
2568        intInst = MkNumInst
2569
2570        plus :: NumInst a -> a -> a -> a
2571        plus MkNumInst p q = p + q
2572
2573 Here, a value of type ``NumInst a`` is equivalent to an explicit
2574 ``(Num a)`` dictionary.
2575
2576 All this applies to constructors declared using the syntax of
2577 :ref:`existential-with-context`. For example, the ``NumInst`` data type
2578 above could equivalently be declared like this: ::
2579
2580        data NumInst a
2581           = Num a => MkNumInst (NumInst a)
2582
2583 Notice that, unlike the situation when declaring an existential, there
2584 is no ``forall``, because the ``Num`` constrains the data type's
2585 universally quantified type variable ``a``. A constructor may have both
2586 universal and existential type variables: for example, the following two
2587 declarations are equivalent: ::
2588
2589        data T1 a
2590         = forall b. (Num a, Eq b) => MkT1 a b
2591        data T2 a where
2592         MkT2 :: (Num a, Eq b) => a -> b -> T2 a
2593
2594 All this behaviour contrasts with Haskell 98's peculiar treatment of
2595 contexts on a data type declaration (Section 4.2.1 of the Haskell 98
2596 Report). In Haskell 98 the definition ::
2597
2598       data Eq a => Set' a = MkSet' [a]
2599
2600 gives ``MkSet'`` the same type as ``MkSet`` above. But instead of
2601 *making available* an ``(Eq a)`` constraint, pattern-matching on
2602 ``MkSet'`` *requires* an ``(Eq a)`` constraint! GHC faithfully
2603 implements this behaviour, odd though it is. But for GADT-style
2604 declarations, GHC's behaviour is much more useful, as well as much more
2605 intuitive.
2606
2607 The rest of this section gives further details about GADT-style data
2608 type declarations.
2609
2610 -  The result type of each data constructor must begin with the type
2611    constructor being defined. If the result type of all constructors has
2612    the form ``T a1 ... an``, where ``a1 ... an`` are distinct type
2613    variables, then the data type is *ordinary*; otherwise is a
2614    *generalised* data type (:ref:`gadt`).
2615
2616 -  As with other type signatures, you can give a single signature for
2617    several data constructors. In this example we give a single signature
2618    for ``T1`` and ``T2``: ::
2619
2620          data T a where
2621            T1,T2 :: a -> T a
2622            T3 :: T a
2623
2624 -  The type signature of each constructor is independent, and is
2625    implicitly universally quantified as usual. In particular, the type
2626    variable(s) in the "``data T a where``" header have no scope, and
2627    different constructors may have different universally-quantified type
2628    variables: ::
2629
2630          data T a where        -- The 'a' has no scope
2631            T1,T2 :: b -> T b   -- Means forall b. b -> T b
2632            T3 :: T a           -- Means forall a. T a
2633
2634 -  A constructor signature may mention type class constraints, which can
2635    differ for different constructors. For example, this is fine: ::
2636
2637          data T a where
2638            T1 :: Eq b => b -> b -> T b
2639            T2 :: (Show c, Ix c) => c -> [c] -> T c
2640
2641    When pattern matching, these constraints are made available to
2642    discharge constraints in the body of the match. For example: ::
2643
2644          f :: T a -> String
2645          f (T1 x y) | x==y      = "yes"
2646                     | otherwise = "no"
2647          f (T2 a b)             = show a
2648
2649    Note that ``f`` is not overloaded; the ``Eq`` constraint arising from
2650    the use of ``==`` is discharged by the pattern match on ``T1`` and
2651    similarly the ``Show`` constraint arising from the use of ``show``.
2652
2653 -  Unlike a Haskell-98-style data type declaration, the type variable(s)
2654    in the "``data Set a where``" header have no scope. Indeed, one can
2655    write a kind signature instead: ::
2656
2657          data Set :: * -> * where ...
2658
2659    or even a mixture of the two: ::
2660
2661          data Bar a :: (* -> *) -> * where ...
2662
2663    The type variables (if given) may be explicitly kinded, so we could
2664    also write the header for ``Foo`` like this: ::
2665
2666          data Bar a (b :: * -> *) where ...
2667
2668 -  You can use strictness annotations, in the obvious places in the
2669    constructor type: ::
2670
2671          data Term a where
2672              Lit    :: !Int -> Term Int
2673              If     :: Term Bool -> !(Term a) -> !(Term a) -> Term a
2674              Pair   :: Term a -> Term b -> Term (a,b)
2675
2676 -  You can use a ``deriving`` clause on a GADT-style data type
2677    declaration. For example, these two declarations are equivalent ::
2678
2679          data Maybe1 a where {
2680              Nothing1 :: Maybe1 a ;
2681              Just1    :: a -> Maybe1 a
2682            } deriving( Eq, Ord )
2683
2684          data Maybe2 a = Nothing2 | Just2 a
2685               deriving( Eq, Ord )
2686
2687 -  The type signature may have quantified type variables that do not
2688    appear in the result type: ::
2689
2690          data Foo where
2691             MkFoo :: a -> (a->Bool) -> Foo
2692             Nil   :: Foo
2693
2694    Here the type variable ``a`` does not appear in the result type of
2695    either constructor. Although it is universally quantified in the type
2696    of the constructor, such a type variable is often called
2697    "existential". Indeed, the above declaration declares precisely the
2698    same type as the ``data Foo`` in :ref:`existential-quantification`.
2699
2700    The type may contain a class context too, of course: ::
2701
2702          data Showable where
2703            MkShowable :: Show a => a -> Showable
2704
2705 -  You can use record syntax on a GADT-style data type declaration: ::
2706
2707          data Person where
2708              Adult :: { name :: String, children :: [Person] } -> Person
2709              Child :: Show a => { name :: !String, funny :: a } -> Person
2710
2711    As usual, for every constructor that has a field ``f``, the type of
2712    field ``f`` must be the same (modulo alpha conversion). The ``Child``
2713    constructor above shows that the signature may have a context,
2714    existentially-quantified variables, and strictness annotations, just
2715    as in the non-record case. (NB: the "type" that follows the
2716    double-colon is not really a type, because of the record syntax and
2717    strictness annotations. A "type" of this form can appear only in a
2718    constructor signature.)
2719
2720 -  Record updates are allowed with GADT-style declarations, only fields
2721    that have the following property: the type of the field mentions no
2722    existential type variables.
2723
2724 -  As in the case of existentials declared using the Haskell-98-like
2725    record syntax (:ref:`existential-records`), record-selector functions
2726    are generated only for those fields that have well-typed selectors.
2727    Here is the example of that section, in GADT-style syntax: ::
2728
2729        data Counter a where
2730            NewCounter :: { _this    :: self
2731                          , _inc     :: self -> self
2732                          , _display :: self -> IO ()
2733                          , tag      :: a
2734                          } -> Counter a
2735
2736    As before, only one selector function is generated here, that for
2737    ``tag``. Nevertheless, you can still use all the field names in
2738    pattern matching and record construction.
2739
2740 -  In a GADT-style data type declaration there is no obvious way to
2741    specify that a data constructor should be infix, which makes a
2742    difference if you derive ``Show`` for the type. (Data constructors
2743    declared infix are displayed infix by the derived ``show``.) So GHC
2744    implements the following design: a data constructor declared in a
2745    GADT-style data type declaration is displayed infix by ``Show`` iff
2746    (a) it is an operator symbol, (b) it has two arguments, (c) it has a
2747    programmer-supplied fixity declaration. For example
2748
2749    ::
2750
2751           infix 6 (:--:)
2752           data T a where
2753             (:--:) :: Int -> Bool -> T Int
2754
2755 .. _gadt:
2756
2757 Generalised Algebraic Data Types (GADTs)
2758 ----------------------------------------
2759
2760 .. ghc-flag:: -XGADTs
2761
2762     :implies: :ghc-flag:`-XMonoLocalBinds`, :ghc-flag:`-XGADTSyntax`
2763
2764     Allow use of Generalised Algebraic Data Types (GADTs).
2765
2766 Generalised Algebraic Data Types generalise ordinary algebraic data
2767 types by allowing constructors to have richer return types. Here is an
2768 example: ::
2769
2770       data Term a where
2771           Lit    :: Int -> Term Int
2772           Succ   :: Term Int -> Term Int
2773           IsZero :: Term Int -> Term Bool
2774           If     :: Term Bool -> Term a -> Term a -> Term a
2775           Pair   :: Term a -> Term b -> Term (a,b)
2776
2777 Notice that the return type of the constructors is not always
2778 ``Term a``, as is the case with ordinary data types. This generality
2779 allows us to write a well-typed ``eval`` function for these ``Terms``: ::
2780
2781       eval :: Term a -> a
2782       eval (Lit i)      = i
2783       eval (Succ t)     = 1 + eval t
2784       eval (IsZero t)   = eval t == 0
2785       eval (If b e1 e2) = if eval b then eval e1 else eval e2
2786       eval (Pair e1 e2) = (eval e1, eval e2)
2787
2788 The key point about GADTs is that *pattern matching causes type
2789 refinement*. For example, in the right hand side of the equation ::
2790
2791       eval :: Term a -> a
2792       eval (Lit i) =  ...
2793
2794 the type ``a`` is refined to ``Int``. That's the whole point! A precise
2795 specification of the type rules is beyond what this user manual aspires
2796 to, but the design closely follows that described in the paper `Simple
2797 unification-based type inference for
2798 GADTs <http://research.microsoft.com/%7Esimonpj/papers/gadt/>`__, (ICFP
2799 2006). The general principle is this: *type refinement is only carried
2800 out based on user-supplied type annotations*. So if no type signature is
2801 supplied for ``eval``, no type refinement happens, and lots of obscure
2802 error messages will occur. However, the refinement is quite general. For
2803 example, if we had: ::
2804
2805       eval :: Term a -> a -> a
2806       eval (Lit i) j =  i+j
2807
2808 the pattern match causes the type ``a`` to be refined to ``Int``
2809 (because of the type of the constructor ``Lit``), and that refinement
2810 also applies to the type of ``j``, and the result type of the ``case``
2811 expression. Hence the addition ``i+j`` is legal.
2812
2813 These and many other examples are given in papers by Hongwei Xi, and Tim
2814 Sheard. There is a longer introduction `on the
2815 wiki <http://www.haskell.org/haskellwiki/GADT>`__, and Ralf Hinze's `Fun
2816 with phantom
2817 types <http://www.cs.ox.ac.uk/ralf.hinze/publications/With.pdf>`__ also
2818 has a number of examples. Note that papers may use different notation to
2819 that implemented in GHC.
2820
2821 The rest of this section outlines the extensions to GHC that support
2822 GADTs. The extension is enabled with :ghc-flag:`-XGADTs`. The :ghc-flag:`-XGADTs` flag
2823 also sets :ghc-flag:`-XGADTSyntax` and :ghc-flag:`-XMonoLocalBinds`.
2824
2825 -  A GADT can only be declared using GADT-style syntax
2826    (:ref:`gadt-style`); the old Haskell 98 syntax for data declarations
2827    always declares an ordinary data type. The result type of each
2828    constructor must begin with the type constructor being defined, but
2829    for a GADT the arguments to the type constructor can be arbitrary
2830    monotypes. For example, in the ``Term`` data type above, the type of
2831    each constructor must end with ``Term ty``, but the ``ty`` need not
2832    be a type variable (e.g. the ``Lit`` constructor).
2833
2834 -  It is permitted to declare an ordinary algebraic data type using
2835    GADT-style syntax. What makes a GADT into a GADT is not the syntax,
2836    but rather the presence of data constructors whose result type is not
2837    just ``T a b``.
2838
2839 -  You cannot use a ``deriving`` clause for a GADT; only for an ordinary
2840    data type.
2841
2842 -  As mentioned in :ref:`gadt-style`, record syntax is supported. For
2843    example:
2844
2845    ::
2846
2847          data Term a where
2848              Lit    :: { val  :: Int }      -> Term Int
2849              Succ   :: { num  :: Term Int } -> Term Int
2850              Pred   :: { num  :: Term Int } -> Term Int
2851              IsZero :: { arg  :: Term Int } -> Term Bool
2852              Pair   :: { arg1 :: Term a
2853                        , arg2 :: Term b
2854                        }                    -> Term (a,b)
2855              If     :: { cnd  :: Term Bool
2856                        , tru  :: Term a
2857                        , fls  :: Term a
2858                        }                    -> Term a
2859
2860    However, for GADTs there is the following additional constraint:
2861    every constructor that has a field ``f`` must have the same result
2862    type (modulo alpha conversion) Hence, in the above example, we cannot
2863    merge the ``num`` and ``arg`` fields above into a single name.
2864    Although their field types are both ``Term Int``, their selector
2865    functions actually have different types:
2866
2867    ::
2868
2869          num :: Term Int -> Term Int
2870          arg :: Term Bool -> Term Int
2871
2872 -  When pattern-matching against data constructors drawn from a GADT,
2873    for example in a ``case`` expression, the following rules apply:
2874
2875    -  The type of the scrutinee must be rigid.
2876
2877    -  The type of the entire ``case`` expression must be rigid.
2878
2879    -  The type of any free variable mentioned in any of the ``case``
2880       alternatives must be rigid.
2881
2882    A type is "rigid" if it is completely known to the compiler at its
2883    binding site. The easiest way to ensure that a variable a rigid type
2884    is to give it a type signature. For more precise details see `Simple
2885    unification-based type inference for
2886    GADTs <http://research.microsoft.com/%7Esimonpj/papers/gadt/>`__. The
2887    criteria implemented by GHC are given in the Appendix.
2888
2889 .. _record-system-extensions:
2890
2891 Extensions to the record system
2892 ===============================
2893
2894 .. _traditional-record-syntax:
2895
2896 Traditional record syntax
2897 -------------------------
2898
2899 .. ghc-flag:: -XNoTraditionalRecordSyntax
2900
2901     :since: 7.4.1
2902
2903     Disallow use of record syntax.
2904
2905 Traditional record syntax, such as ``C {f = x}``, is enabled by default.
2906 To disable it, you can use the :ghc-flag:`-XNoTraditionalRecordSyntax` flag.
2907
2908 .. _disambiguate-fields:
2909
2910 Record field disambiguation
2911 ---------------------------
2912
2913 .. ghc-flag:: -XDisambiguateRecordFields
2914
2915     :since: 6.8.1
2916
2917     Allow the compiler to automatically choose between identically-named
2918     record selectors based on type (if the choice is unambiguous).
2919
2920 In record construction and record pattern matching it is entirely
2921 unambiguous which field is referred to, even if there are two different
2922 data types in scope with a common field name. For example:
2923
2924 ::
2925
2926     module M where
2927       data S = MkS { x :: Int, y :: Bool }
2928
2929     module Foo where
2930       import M
2931
2932       data T = MkT { x :: Int }
2933
2934       ok1 (MkS { x = n }) = n+1   -- Unambiguous
2935       ok2 n = MkT { x = n+1 }     -- Unambiguous
2936
2937       bad1 k = k { x = 3 }        -- Ambiguous
2938       bad2 k = x k                -- Ambiguous
2939
2940 Even though there are two ``x``'s in scope, it is clear that the ``x``
2941 in the pattern in the definition of ``ok1`` can only mean the field
2942 ``x`` from type ``S``. Similarly for the function ``ok2``. However, in
2943 the record update in ``bad1`` and the record selection in ``bad2`` it is
2944 not clear which of the two types is intended.
2945
2946 Haskell 98 regards all four as ambiguous, but with the
2947 :ghc-flag:`-XDisambiguateRecordFields` flag, GHC will accept the former two. The
2948 rules are precisely the same as those for instance declarations in
2949 Haskell 98, where the method names on the left-hand side of the method
2950 bindings in an instance declaration refer unambiguously to the method of
2951 that class (provided they are in scope at all), even if there are other
2952 variables in scope with the same name. This reduces the clutter of
2953 qualified names when you import two records from different modules that
2954 use the same field name.
2955
2956 Some details:
2957
2958 -  Field disambiguation can be combined with punning (see
2959    :ref:`record-puns`). For example: ::
2960
2961        module Foo where
2962          import M
2963          x=True
2964          ok3 (MkS { x }) = x+1   -- Uses both disambiguation and punning
2965
2966 -  With :ghc-flag:`-XDisambiguateRecordFields` you can use *unqualified* field
2967    names even if the corresponding selector is only in scope *qualified*
2968    For example, assuming the same module ``M`` as in our earlier
2969    example, this is legal: ::
2970
2971        module Foo where
2972          import qualified M    -- Note qualified
2973
2974          ok4 (M.MkS { x = n }) = n+1   -- Unambiguous
2975
2976    Since the constructor ``MkS`` is only in scope qualified, you must
2977    name it ``M.MkS``, but the field ``x`` does not need to be qualified
2978    even though ``M.x`` is in scope but ``x`` is not (In effect, it is
2979    qualified by the constructor).
2980
2981 .. _duplicate-record-fields:
2982
2983 Duplicate record fields
2984 -----------------------
2985
2986 .. ghc-flag:: -XDuplicateRecordFields
2987
2988     :implies: :ghc-flag:`-XDisambiguateRecordFields`
2989     :since: 8.0.1
2990
2991     Allow definition of record types with identically-named fields.
2992
2993 Going beyond :ghc-flag:`-XDisambiguateRecordFields` (see :ref:`disambiguate-fields`),
2994 the :ghc-flag:`-XDuplicateRecordFields` extension allows multiple datatypes to be
2995 declared using the same field names in a single module. For example, it allows
2996 this: ::
2997
2998     module M where
2999       data S = MkS { x :: Int }
3000       data T = MkT { x :: Bool }
3001
3002 Uses of fields that are always unambiguous because they mention the constructor,
3003 including construction and pattern-matching, may freely use duplicated field
3004 names. For example, the following are permitted (just as with
3005 :ghc-flag:`-XDisambiguateRecordFields`): ::
3006
3007     s = MkS { x = 3 }
3008
3009     f (MkT { x = b }) = b
3010
3011 Field names used as selector functions or in record updates must be unambiguous,
3012 either because there is only one such field in scope, or because a type
3013 signature is supplied, as described in the following sections.
3014
3015 Selector functions
3016 ~~~~~~~~~~~~~~~~~~
3017
3018 Fields may be used as selector functions only if they are unambiguous, so this
3019 is still not allowed if both ``S(x)`` and ``T(x)`` are in scope: ::
3020
3021     bad r = x r
3022
3023 An ambiguous selector may be disambiguated by the type being "pushed down" to
3024 the occurrence of the selector (see :ref:`higher-rank-type-inference` for more
3025 details on what "pushed down" means). For example, the following are permitted: ::
3026
3027     ok1 = x :: S -> Int
3028
3029     ok2 :: S -> Int
3030     ok2 = x
3031
3032     ok3 = k x -- assuming we already have k :: (S -> Int) -> _
3033
3034 In addition, the datatype that is meant may be given as a type signature on the
3035 argument to the selector: ::
3036
3037     ok4 s = x (s :: S)
3038
3039 However, we do not infer the type of the argument to determine the datatype, or
3040 have any way of deferring the choice to the constraint solver. Thus the
3041 following is ambiguous: ::
3042
3043     bad :: S -> Int
3044     bad s = x s
3045
3046 Even though a field label is duplicated in its defining module, it may be
3047 possible to use the selector unambiguously elsewhere. For example, another
3048 module could import ``S(x)`` but not ``T(x)``, and then use ``x`` unambiguously.
3049
3050 Record updates
3051 ~~~~~~~~~~~~~~
3052
3053 In a record update such as ``e { x = 1 }``, if there are multiple ``x`` fields
3054 in scope, then the type of the context must fix which record datatype is
3055 intended, or a type annotation must be supplied. Consider the following
3056 definitions: ::
3057
3058     data S = MkS { foo :: Int }
3059     data T = MkT { foo :: Int, bar :: Int }
3060     data U = MkU { bar :: Int, baz :: Int }
3061
3062 Without :ghc-flag:`-XDuplicateRecordFields`, an update mentioning ``foo`` will always be
3063 ambiguous if all these definitions were in scope. When the extension is enabled,
3064 there are several options for disambiguating updates:
3065
3066 - Check for types that have all the fields being updated. For example: ::
3067
3068       f x = x { foo = 3, bar = 2 }
3069
3070   Here ``f`` must be updating ``T`` because neither ``S`` nor ``U`` have both
3071   fields.
3072
3073 - Use the type being pushed in to the record update, as in the following: ::
3074
3075       g1 :: T -> T
3076       g1 x = x { foo = 3 }
3077
3078       g2 x = x { foo = 3 } :: T
3079
3080       g3 = k (x { foo = 3 }) -- assuming we already have k :: T -> _
3081
3082 - Use an explicit type signature on the record expression, as in: ::
3083
3084       h x = (x :: T) { foo = 3 }
3085
3086 The type of the expression being updated will not be inferred, and no
3087 constraint-solving will be performed, so the following will be rejected as
3088 ambiguous: ::
3089
3090     let x :: T
3091         x = blah
3092     in x { foo = 3 }
3093
3094     \x -> [x { foo = 3 },  blah :: T ]
3095
3096     \ (x :: T) -> x { foo = 3 }
3097
3098 Import and export of record fields
3099 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3100
3101 When :ghc-flag:`-XDuplicateRecordFields` is enabled, an ambiguous field must be exported
3102 as part of its datatype, rather than at the top level. For example, the
3103 following is legal: ::
3104
3105     module M (S(x), T(..)) where
3106       data S = MkS { x :: Int }
3107       data T = MkT { x :: Bool }
3108
3109 However, this would not be permitted, because ``x`` is ambiguous: ::
3110
3111     module M (x) where ...
3112
3113 Similar restrictions apply on import.
3114
3115 .. _record-puns:
3116
3117 Record puns
3118 -----------
3119
3120 .. ghc-flag:: -XNamedFieldPuns
3121
3122     Allow use of record puns.
3123
3124 Record puns are enabled by the flag :ghc-flag:`-XNamedFieldPuns`.
3125
3126 When using records, it is common to write a pattern that binds a
3127 variable with the same name as a record field, such as: ::
3128
3129     data C = C {a :: Int}
3130     f (C {a = a}) = a
3131
3132 Record punning permits the variable name to be elided, so one can simply
3133 write ::
3134
3135     f (C {a}) = a
3136
3137 to mean the same pattern as above. That is, in a record pattern, the
3138 pattern ``a`` expands into the pattern ``a = a`` for the same name
3139 ``a``.
3140
3141 Note that:
3142
3143 -  Record punning can also be used in an expression, writing, for
3144    example, ::
3145
3146        let a = 1 in C {a}
3147
3148    instead of ::
3149
3150        let a = 1 in C {a = a}
3151
3152    The expansion is purely syntactic, so the expanded right-hand side
3153    expression refers to the nearest enclosing variable that is spelled
3154    the same as the field name.
3155
3156 -  Puns and other patterns can be mixed in the same record: ::
3157
3158        data C = C {a :: Int, b :: Int}
3159        f (C {a, b = 4}) = a
3160
3161 -  Puns can be used wherever record patterns occur (e.g. in ``let``
3162    bindings or at the top-level).
3163
3164 -  A pun on a qualified field name is expanded by stripping off the
3165    module qualifier. For example: ::
3166
3167        f (C {M.a}) = a
3168
3169    means ::
3170
3171        f (M.C {M.a = a}) = a
3172
3173    (This is useful if the field selector ``a`` for constructor ``M.C``
3174    is only in scope in qualified form.)
3175
3176 .. _record-wildcards:
3177
3178 Record wildcards
3179 ----------------
3180
3181 .. ghc-flag:: -XRecordWildCards
3182
3183     :implies: :ghc-flag:`-XDisambiguateRecordFields`.
3184
3185     Allow the use of wildcards in record construction and pattern matching.
3186
3187 Record wildcards are enabled by the flag :ghc-flag:`-XRecordWildCards`. This
3188 flag implies :ghc-flag:`-XDisambiguateRecordFields`.
3189
3190 For records with many fields, it can be tiresome to write out each field
3191 individually in a record pattern, as in ::
3192
3193     data C = C {a :: Int, b :: Int, c :: Int, d :: Int}
3194     f (C {a = 1, b = b, c = c, d = d}) = b + c + d
3195
3196 Record wildcard syntax permits a "``..``" in a record pattern, where
3197 each elided field ``f`` is replaced by the pattern ``f = f``. For
3198 example, the above pattern can be written as ::
3199
3200     f (C {a = 1, ..}) = b + c + d
3201
3202 More details:
3203
3204 -  Record wildcards in patterns can be mixed with other patterns,
3205    including puns (:ref:`record-puns`); for example, in a pattern
3206    ``(C {a = 1, b, ..})``. Additionally, record wildcards can be used
3207    wherever record patterns occur, including in ``let`` bindings and at
3208    the top-level. For example, the top-level binding ::
3209
3210        C {a = 1, ..} = e
3211
3212    defines ``b``, ``c``, and ``d``.
3213
3214 -  Record wildcards can also be used in an expression, when constructing
3215    a record. For example, ::
3216
3217        let {a = 1; b = 2; c = 3; d = 4} in C {..}
3218
3219    in place of ::
3220
3221        let {a = 1; b = 2; c = 3; d = 4} in C {a=a, b=b, c=c, d=d}
3222
3223    The expansion is purely syntactic, so the record wildcard expression
3224    refers to the nearest enclosing variables that are spelled the same
3225    as the omitted field names.
3226
3227 -  Record wildcards may *not* be used in record *updates*. For example
3228    this is illegal: ::
3229
3230        f r = r { x = 3, .. }
3231
3232 -  For both pattern and expression wildcards, the "``..``" expands to
3233    the missing *in-scope* record fields. Specifically the expansion of
3234    "``C {..}``" includes ``f`` if and only if:
3235
3236    -  ``f`` is a record field of constructor ``C``.
3237
3238    -  The record field ``f`` is in scope somehow (either qualified or
3239       unqualified).
3240
3241    -  In the case of expressions (but not patterns), the variable ``f``
3242       is in scope unqualified, and is not imported or bound at top level.
3243       For example, ``f`` can be bound by an enclosing pattern match or
3244       let/where-binding.  (The motivation here is that it should be
3245       easy for the reader to figure out what the "``..``" expands to.)
3246
3247    These rules restrict record wildcards to the situations in which the
3248    user could have written the expanded version. For example ::
3249
3250        module M where
3251          data R = R { a,b,c :: Int }
3252        module X where
3253          import M( R(a,c) )
3254          f b = R { .. }
3255
3256    The ``R{..}`` expands to ``R{M.a=a}``, omitting ``b`` since the
3257    record field is not in scope, and omitting ``c`` since the variable
3258    ``c`` is not in scope (apart from the binding of the record selector
3259    ``c``, of course).
3260
3261 -  Record wildcards cannot be used (a) in a record update construct, and
3262    (b) for data constructors that are not declared with record fields.
3263    For example: ::
3264
3265        f x = x { v=True, .. }   -- Illegal (a)
3266
3267        data T = MkT Int Bool
3268        g = MkT { .. }           -- Illegal (b)
3269        h (MkT { .. }) = True    -- Illegal (b)
3270
3271
3272 .. _record-field-selector-polymorphism:
3273
3274 Record field selector polymorphism
3275 ----------------------------------
3276
3277 The module :base-ref:`GHC.Records.` defines the following: ::
3278
3279   class HasField (x :: k) r a | x r -> a where
3280     getField :: r -> a
3281
3282 A ``HasField x r a`` constraint represents the fact that ``x`` is a
3283 field of type ``a`` belonging to a record type ``r``.  The
3284 ``getField`` method gives the record selector function.
3285
3286 This allows definitions that are polymorphic over record types with a specified
3287 field.  For example, the following works with any record type that has a field
3288 ``name :: String``: ::
3289
3290   foo :: HasField "name" r String => r -> String
3291   foo r = reverse (getField @"name" r)
3292
3293 ``HasField`` is a magic built-in typeclass (similar to ``Coercible``, for
3294 example).  It is given special treatment by the constraint solver (see
3295 :ref:`solving-hasfield-constraints`).  Users may define their own instances of
3296 ``HasField`` also (see :ref:`virtual-record-fields`).
3297
3298 .. _solving-hasfield-constraints:
3299
3300 Solving HasField constraints
3301 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3302
3303 If the constraint solver encounters a constraint ``HasField x r a``
3304 where ``r`` is a concrete datatype with a field ``x`` in scope, it
3305 will automatically solve the constraint using the field selector as
3306 the dictionary, unifying ``a`` with the type of the field if
3307 necessary.  This happens irrespective of which extensions are enabled.
3308
3309 For example, if the following datatype is in scope ::
3310
3311   data Person = Person { name :: String }
3312
3313 the end result is rather like having an instance ::
3314
3315   instance HasField "name" Person String where
3316     getField = name
3317
3318 except that this instance is not actually generated anywhere, rather
3319 the constraint is solved directly by the constraint solver.
3320
3321 A field must be in scope for the corresponding ``HasField`` constraint
3322 to be solved.  This retains the existing representation hiding
3323 mechanism, whereby a module may choose not to export a field,
3324 preventing client modules from accessing or updating it directly.
3325
3326 Solving ``HasField`` constraints depends on the field selector functions that
3327 are generated for each datatype definition:
3328
3329 -  If a record field does not have a selector function because its type would allow
3330    an existential variable to escape, the corresponding ``HasField`` constraint
3331    will not be solved.  For example, ::
3332
3333      {-# LANGUAGE ExistentialQuantification #-}
3334      data Exists t = forall x . MkExists { unExists :: t x }
3335
3336    does not give rise to a selector ``unExists :: Exists t -> t x`` and we will not
3337    solve ``HasField "unExists" (Exists t) a`` automatically.
3338
3339 -  If a record field has a polymorphic type (and hence the selector function is
3340    higher-rank), the corresponding ``HasField`` constraint will not be solved,
3341    because doing so would violate the functional dependency on ``HasField`` and/or
3342    require impredicativity.  For example, ::
3343
3344      {-# LANGUAGE RankNTypes #-}
3345      data Higher = MkHigher { unHigher :: forall t . t -> t }
3346
3347    gives rise to a selector ``unHigher :: Higher -> (forall t . t -> t)`` but does
3348    not lead to solution of the constraint ``HasField "unHigher" Higher a``.
3349
3350 -  A record GADT may have a restricted type for a selector function, which may lead
3351    to additional unification when solving ``HasField`` constraints.  For example, ::
3352
3353      {-# LANGUAGE GADTs #-}
3354      data Gadt t where
3355        MkGadt :: { unGadt :: Maybe v } -> Gadt [v]
3356
3357    gives rise to a selector ``unGadt :: Gadt [v] -> Maybe v``, so the solver will reduce
3358    the constraint ``HasField "unGadt" (Gadt t) b`` by unifying ``t ~ [v]`` and
3359    ``b ~ Maybe v`` for some fresh metavariable ``v``, rather as if we had an instance ::
3360
3361      instance (t ~ [v], b ~ Maybe v) => HasField "unGadt" (Gadt t) b
3362
3363 -  If a record type has an old-fashioned datatype context, the ``HasField``
3364    constraint will be reduced to solving the constraints from the context.
3365    For example, ::
3366
3367      {-# LANGUAGE DatatypeContexts #-}
3368      data Eq a => Silly a = MkSilly { unSilly :: a }
3369
3370    gives rise to a selector ``unSilly :: Eq a => Silly a -> a``, so
3371    the solver will reduce the constraint ``HasField "unSilly" (Silly a) b`` to
3372    ``Eq a`` (and unify ``a`` with ``b``), rather as if we had an instance ::
3373
3374      instance (Eq a, a ~ b) => HasField "unSilly" (Silly a) b
3375
3376 .. _virtual-record-fields:
3377
3378 Virtual record fields
3379 ~~~~~~~~~~~~~~~~~~~~~
3380
3381 Users may define their own instances of ``HasField``, provided they do
3382 not conflict with the built-in constraint solving behaviour.  This
3383 allows "virtual" record fields to be defined for datatypes that do not
3384 otherwise have them.
3385
3386 For example, this instance would make the ``name`` field of ``Person``
3387 accessible using ``#fullname`` as well: ::
3388
3389   instance HasField "fullname" Person String where
3390     getField = name
3391
3392 More substantially, an anonymous records library could provide
3393 ``HasField`` instances for its anonymous records, and thus be
3394 compatible with the polymorphic record selectors introduced by this
3395 proposal.  For example, something like this makes it possible to use
3396 ``getField`` to access ``Record`` values with the appropriate
3397 string in the type-level list of fields: ::
3398
3399   data Record (xs :: [(k, Type)]) where
3400     Nil  :: Record '[]
3401     Cons :: Proxy x -> a -> Record xs -> Record ('(x, a) ': xs)
3402
3403   instance HasField x (Record ('(x, a) ': xs)) a where
3404     getField (Cons _ v _) = v
3405   instance HasField x (Record xs) a => HasField x (Record ('(y, b) ': xs)) a where
3406     getField (Cons _ _ r) = getField @x r
3407
3408   r :: Record '[ '("name", String) ]
3409   r = Cons Proxy "R" Nil)
3410
3411   x = getField @"name" r
3412
3413 Since representations such as this can support field labels with kinds other
3414 than ``Symbol``, the ``HasField`` class is poly-kinded (even though the built-in
3415 constraint solving works only at kind ``Symbol``).  In particular, this allows
3416 users to declare scoped field labels such as in the following example: ::
3417
3418   data PersonFields = Name
3419
3420   s :: Record '[ '(Name, String) ]
3421   s = Cons Proxy "S" Nil
3422
3423   y = getField @Name s
3424
3425 In order to avoid conflicting with the built-in constraint solving,
3426 the following user-defined ``HasField`` instances are prohibited (in
3427 addition to the usual rules, such as the prohibition on type
3428 families appearing in instance heads):
3429
3430 -  ``HasField _ r _`` where ``r`` is a variable;
3431
3432 -  ``HasField _ (T ...) _`` if ``T`` is a data family (because it
3433    might have fields introduced later, using data instance declarations);
3434
3435 -  ``HasField x (T ...) _`` if ``x`` is a variable and ``T`` has any
3436    fields at all (but this instance is permitted if ``T`` has no fields);
3437
3438 -  ``HasField "foo" (T ...) _`` if ``T`` has a field ``foo`` (but this
3439    instance is permitted if it does not).
3440
3441 If a field has a higher-rank or existential type, the corresponding ``HasField``
3442 constraint will not be solved automatically (as described above), but in the
3443 interests of simplicity we do not permit users to define their own instances
3444 either.  If a field is not in scope, the corresponding instance is still
3445 prohibited, to avoid conflicts in downstream modules.
3446
3447
3448 .. _deriving:
3449
3450 Extensions to the "deriving" mechanism
3451 ======================================
3452
3453 .. _deriving-inferred:
3454
3455 Inferred context for deriving clauses
3456 -------------------------------------
3457
3458 The Haskell Report is vague about exactly when a ``deriving`` clause is
3459 legal. For example: ::
3460
3461       data T0 f a = MkT0 a         deriving( Eq )
3462       data T1 f a = MkT1 (f a)     deriving( Eq )
3463       data T2 f a = MkT2 (f (f a)) deriving( Eq )
3464
3465 The natural generated ``Eq`` code would result in these instance
3466 declarations: ::
3467
3468       instance Eq a         => Eq (T0 f a) where ...
3469       instance Eq (f a)     => Eq (T1 f a) where ...
3470       instance Eq (f (f a)) => Eq (T2 f a) where ...
3471
3472 The first of these is obviously fine. The second is still fine, although
3473 less obviously. The third is not Haskell 98, and risks losing
3474 termination of instances.
3475
3476 GHC takes a conservative position: it accepts the first two, but not the
3477 third. The rule is this: each constraint in the inferred instance
3478 context must consist only of type variables, with no repetitions.
3479
3480 This rule is applied regardless of flags. If you want a more exotic
3481 context, you can write it yourself, using the `standalone deriving
3482 mechanism <#stand-alone-deriving>`__.
3483
3484 .. _stand-alone-deriving:
3485
3486 Stand-alone deriving declarations
3487 ---------------------------------
3488
3489 .. ghc-flag:: -XStandaloneDeriving
3490
3491     Allow the use of stand-alone ``deriving`` declarations.
3492
3493 GHC allows stand-alone ``deriving`` declarations, enabled by
3494 :ghc-flag:`-XStandaloneDeriving`: ::
3495
3496       data Foo a = Bar a | Baz String
3497
3498       deriving instance Eq a => Eq (Foo a)
3499
3500 The syntax is identical to that of an ordinary instance declaration
3501 apart from (a) the keyword ``deriving``, and (b) the absence of the
3502 ``where`` part.
3503
3504 However, standalone deriving differs from a ``deriving`` clause in a
3505 number of important ways:
3506
3507 -  The standalone deriving declaration does not need to be in the same
3508    module as the data type declaration. (But be aware of the dangers of
3509    orphan instances (:ref:`orphan-modules`).
3510
3511 -  You must supply an explicit context (in the example the context is
3512    ``(Eq a)``), exactly as you would in an ordinary instance
3513    declaration. (In contrast, in a ``deriving`` clause attached to a
3514    data type declaration, the context is inferred.)
3515
3516 -  Unlike a ``deriving`` declaration attached to a ``data`` declaration,
3517    the instance can be more specific than the data type (assuming you
3518    also use :ghc-flag:`-XFlexibleInstances`, :ref:`instance-rules`). Consider
3519    for example ::
3520
3521          data Foo a = Bar a | Baz String
3522
3523          deriving instance Eq a => Eq (Foo [a])
3524          deriving instance Eq a => Eq (Foo (Maybe a))
3525
3526    This will generate a derived instance for ``(Foo [a])`` and
3527    ``(Foo (Maybe a))``, but other types such as ``(Foo (Int,Bool))``
3528    will not be an instance of ``Eq``.
3529
3530 -  Unlike a ``deriving`` declaration attached to a ``data`` declaration,
3531    GHC does not restrict the form of the data type. Instead, GHC simply
3532    generates the appropriate boilerplate code for the specified class,
3533    and typechecks it. If there is a type error, it is your problem. (GHC
3534    will show you the offending code if it has a type error.)
3535
3536    The merit of this is that you can derive instances for GADTs and
3537    other exotic data types, providing only that the boilerplate code
3538    does indeed typecheck. For example: ::
3539
3540          data T a where
3541             T1 :: T Int
3542             T2 :: T Bool
3543
3544          deriving instance Show (T a)
3545
3546    In this example, you cannot say ``... deriving( Show )`` on the data
3547    type declaration for ``T``, because ``T`` is a GADT, but you *can*
3548    generate the instance declaration using stand-alone deriving.
3549
3550    The down-side is that, if the boilerplate code fails to typecheck,
3551    you will get an error message about that code, which you did not
3552    write. Whereas, with a ``deriving`` clause the side-conditions are
3553    necessarily more conservative, but any error message may be more
3554    comprehensible.
3555
3556 -  Under most circumstances, you cannot use standalone deriving to create an
3557    instance for a data type whose constructors are not all in scope. This is
3558    because the derived instance would generate code that uses the constructors
3559    behind the scenes, which would break abstraction.
3560
3561    The one exception to this rule is :ghc-flag:`-XDeriveAnyClass`, since
3562    deriving an instance via :ghc-flag:`-XDeriveAnyClass` simply generates
3563    an empty instance declaration, which does not require the use of any
3564    constructors. See the `deriving any class <#derive-any-class>`__ section
3565    for more details.
3566
3567 In other ways, however, a standalone deriving obeys the same rules as
3568 ordinary deriving:
3569
3570 -  A ``deriving instance`` declaration must obey the same rules
3571    concerning form and termination as ordinary instance declarations,
3572    controlled by the same flags; see :ref:`instance-decls`.
3573
3574 -  The stand-alone syntax is generalised for newtypes in exactly the
3575    same way that ordinary ``deriving`` clauses are generalised
3576    (:ref:`newtype-deriving`). For example: ::
3577
3578          newtype Foo a = MkFoo (State Int a)
3579
3580          deriving instance MonadState Int Foo
3581
3582    GHC always treats the *last* parameter of the instance (``Foo`` in
3583    this example) as the type whose instance is being derived.
3584
3585 .. _deriving-extra:
3586
3587 Deriving instances of extra classes (``Data``, etc.)
3588 ----------------------------------------------------
3589
3590 .. ghc-flag:: -XDeriveGeneric
3591
3592     :since: 7.2
3593
3594     Allow automatic deriving of instances for the ``Generic`` typeclass.
3595
3596 .. ghc-flag:: -XDeriveFunctor
3597
3598     :since: 6.12
3599
3600     Allow automatic deriving of instances for the ``Functor`` typeclass.
3601
3602 .. ghc-flag:: -XDeriveFoldable
3603
3604     :since: 6.12
3605
3606     Allow automatic deriving of instances for the ``Foldable`` typeclass.
3607
3608 .. ghc-flag:: -XDeriveTraversable
3609
3610     :since: 6.12
3611
3612     :implies: :ghc-flag:`-XDeriveFoldable`, :ghc-flag:`-XDeriveFunctor`
3613
3614     Allow automatic deriving of instances for the ``Traversable`` typeclass.
3615
3616 Haskell 98 allows the programmer to add "``deriving( Eq, Ord )``" to a
3617 data type declaration, to generate a standard instance declaration for
3618 classes specified in the ``deriving`` clause. In Haskell 98, the only
3619 classes that may appear in the ``deriving`` clause are the standard
3620 classes ``Eq``, ``Ord``, ``Enum``, ``Ix``, ``Bounded``, ``Read``, and
3621 ``Show``.
3622
3623 GHC extends this list with several more classes that may be
3624 automatically derived:
3625
3626 -  With :ghc-flag:`-XDeriveGeneric`, you can derive instances of the classes
3627    ``Generic`` and ``Generic1``, defined in ``GHC.Generics``. You can
3628    use these to define generic functions, as described in
3629    :ref:`generic-programming`.
3630
3631 -  With :ghc-flag:`-XDeriveFunctor`, you can derive instances of the class
3632    ``Functor``, defined in ``GHC.Base``. See :ref:`deriving-functor`.
3633
3634 -  With :ghc-flag:`-XDeriveDataTypeable`, you can derive instances of the class
3635    ``Data``, defined in ``Data.Data``. See :ref:`deriving-data`.
3636
3637 -  With :ghc-flag:`-XDeriveFoldable`, you can derive instances of the class
3638    ``Foldable``, defined in ``Data.Foldable``. See
3639    :ref:`deriving-foldable`.
3640
3641 -  With :ghc-flag:`-XDeriveTraversable`, you can derive instances of the class
3642    ``Traversable``, defined in ``Data.Traversable``. Since the
3643    ``Traversable`` instance dictates the instances of ``Functor`` and
3644    ``Foldable``, you'll probably want to derive them too, so
3645    :ghc-flag:`-XDeriveTraversable` implies :ghc-flag:`-XDeriveFunctor` and
3646    :ghc-flag:`-XDeriveFoldable`. See :ref:`deriving-traversable`.
3647
3648 -  With :ghc-flag:`-XDeriveLift`, you can derive instances of the class ``Lift``,
3649    defined in the ``Language.Haskell.TH.Syntax`` module of the
3650    ``template-haskell`` package. See :ref:`deriving-lift`.
3651
3652 You can also use a standalone deriving declaration instead (see
3653 :ref:`stand-alone-deriving`).
3654
3655 In each case the appropriate class must be in scope before it can be
3656 mentioned in the ``deriving`` clause.
3657
3658 .. _deriving-functor:
3659
3660 Deriving ``Functor`` instances
3661 ------------------------------
3662
3663 With :ghc-flag:`-XDeriveFunctor`, one can derive ``Functor`` instances for data types
3664 of kind ``* -> *``. For example, this declaration::
3665
3666     data Example a = Ex a Char (Example a) (Example Char)
3667       deriving Functor
3668
3669 would generate the following instance: ::
3670
3671     instance Functor Example where
3672       fmap f (Ex a1 a2 a3 a4) = Ex (f a1) a2 (fmap f a3) a4
3673
3674 The basic algorithm for :ghc-flag:`-XDeriveFunctor` walks the arguments of each
3675 constructor of a data type, applying a mapping function depending on the type
3676 of each argument. If a plain type variable is found that is syntactically
3677 equivalent to the last type parameter of the data type (``a`` in the above
3678 example), then we apply the function ``f`` directly to it. If a type is
3679 encountered that is not syntactically equivalent to the last type parameter
3680 *but does mention* the last type parameter somewhere in it, then a recursive
3681 call to ``fmap`` is made. If a type is found which doesn't mention the last
3682 type parameter at all, then it is left alone.
3683
3684 The second of those cases, in which a type is unequal to the type parameter but
3685 does contain the type parameter, can be surprisingly tricky. For example, the
3686 following example compiles::
3687
3688     newtype Right a = Right (Either Int a) deriving Functor
3689
3690 Modifying the code slightly, however, produces code which will not compile::
3691
3692     newtype Wrong a = Wrong (Either a Int) deriving Functor
3693
3694 The difference involves the placement of the last type parameter, ``a``. In the
3695 ``Right`` case, ``a`` occurs within the type ``Either Int a``, and moreover, it
3696 appears as the last type argument of ``Either``. In the ``Wrong`` case,
3697 however, ``a`` is not the last type argument to ``Either``; rather, ``Int`` is.
3698
3699 This distinction is important because of the way :ghc-flag:`-XDeriveFunctor` works. The
3700 derived ``Functor Right`` instance would be::
3701
3702     instance Functor Right where
3703       fmap f (Right a) = Right (fmap f a)
3704
3705 Given a value of type ``Right a``, GHC must produce a value of type
3706 ``Right b``. Since the argument to the ``Right`` constructor has type
3707 ``Either Int a``, the code recursively calls ``fmap`` on it to produce a value
3708 of type ``Either Int b``, which is used in turn to construct a final value of
3709 type ``Right b``.
3710
3711 The generated code for the ``Functor Wrong`` instance would look exactly the
3712 same, except with ``Wrong`` replacing every occurrence of ``Right``. The
3713 problem is now that ``fmap`` is being applied recursively to a value of type
3714 ``Either a Int``. This cannot possibly produce a value of type
3715 ``Either b Int``, as ``fmap`` can only change the last type parameter! This
3716 causes the generated code to be ill-typed.
3717
3718 As a general rule, if a data type has a derived ``Functor`` instance and its
3719 last type parameter occurs on the right-hand side of the data declaration, then
3720 either it must (1) occur bare (e.g., ``newtype Id a = a``), or (2) occur as the
3721 last argument of a type constructor (as in ``Right`` above).
3722
3723 There are two exceptions to this rule:
3724
3725 #. Tuple types. When a non-unit tuple is used on the right-hand side of a data
3726    declaration, :ghc-flag:`-XDeriveFunctor` treats it as a product of distinct types.
3727    In other words, the following code::
3728
3729        newtype Triple a = Triple (a, Int, [a]) deriving Functor
3730
3731    Would result in a generated ``Functor`` instance like so::
3732
3733        instance Functor Triple where
3734          fmap f (Triple a) =
3735            Triple (case a of
3736                         (a1, a2, a3) -> (f a1, a2, fmap f a3))
3737
3738    That is, :ghc-flag:`-XDeriveFunctor` pattern-matches its way into tuples and maps
3739    over each type that constitutes the tuple. The generated code is
3740    reminiscient of what would be generated from
3741    ``data Triple a = Triple a Int [a]``, except with extra machinery to handle
3742    the tuple.
3743
3744 #. Function types. The last type parameter can appear anywhere in a function
3745    type as long as it occurs in a *covariant* position. To illustrate what this
3746    means, consider the following three examples::
3747
3748        newtype CovFun1 a = CovFun1 (Int -> a) deriving Functor
3749        newtype CovFun2 a = CovFun2 ((a -> Int) -> a) deriving Functor
3750        newtype CovFun3 a = CovFun3 (((Int -> a) -> Int) -> a) deriving Functor
3751
3752    All three of these examples would compile without issue. On the other hand::
3753
3754        newtype ContraFun1 a = ContraFun1 (a -> Int) deriving Functor
3755        newtype ContraFun2 a = ContraFun2 ((Int -> a) -> Int) deriving Functor
3756        newtype ContraFun3 a = ContraFun3 (((a -> Int) -> a) -> Int) deriving Functor
3757
3758    While these examples look similar, none of them would successfully compile.
3759    This is because all occurrences of the last type parameter ``a`` occur in *contravariant* positions, not covariant ones.
3760
3761    Intuitively, a covariant type is *produced*, and a contravariant type is
3762    *consumed*. Most types in Haskell are covariant, but the function type is
3763    special in that the lefthand side of a function arrow reverses variance. If
3764    a function type ``a -> b`` appears in a covariant position (e.g.,
3765    ``CovFun1`` above), then ``a`` is in a contravariant position and ``b`` is
3766    in a covariant position. Similarly, if ``a -> b`` appears in a contravariant
3767    position (e.g., ``CovFun2`` above), then ``a`` is in ``a`` covariant
3768    position and ``b`` is in a contravariant position.
3769
3770    To see why a data type with a contravariant occurrence of its last type
3771    parameter cannot have a derived ``Functor`` instance, let's suppose that a
3772    ``Functor ContraFun1`` instance exists. The implementation would look
3773    something like this::
3774
3775        instance Functor ContraFun1 where
3776          fmap f (ContraFun g) = ContraFun (\x -> _)
3777
3778    We have ``f :: a -> b``, ``g :: a -> Int``, and ``x :: b``. Using these, we
3779    must somehow fill in the hole (denoted with an underscore) with a value of
3780    type ``Int``. What are our options?
3781
3782    We could try applying ``g`` to ``x``. This won't work though, as ``g``
3783    expects an argument of type ``a``, and ``x :: b``. Even worse, we can't turn
3784    ``x`` into something of type ``a``, since ``f`` also needs an argument of
3785    type ``a``! In short, there's no good way to make this work.
3786
3787    On the other hand, a derived ``Functor`` instances for the ``CovFun``\ s are
3788    within the realm of possibility::
3789
3790        instance Functor CovFun1 where
3791          fmap f (CovFun1 g) = CovFun1 (\x -> f (g x))
3792
3793        instance Functor CovFun2 where
3794          fmap f (CovFun2 g) = CovFun2 (\h -> f (g (\x -> h (f x))))
3795
3796        instance Functor CovFun3 where
3797          fmap f (CovFun3 g) = CovFun3 (\h -> f (g (\k -> h (\x -> f (k x)))))
3798
3799 There are some other scenarios in which a derived ``Functor`` instance will
3800 fail to compile:
3801
3802 #. A data type has no type parameters (e.g., ``data Nothing = Nothing``).
3803
3804 #. A data type's last type variable is used in a :ghc-flag:`-XDatatypeContexts`
3805    constraint (e.g., ``data Ord a => O a = O a``).
3806
3807 #. A data type's last type variable is used in an
3808    :ghc-flag:`-XExistentialQuantification` constraint, or is refined in a GADT. For
3809    example, ::
3810
3811        data T a b where
3812            T4 :: Ord b => b -> T a b
3813            T5 :: b -> T b b
3814            T6 :: T a (b,b)
3815
3816        deriving instance Functor (T a)
3817
3818    would not compile successfully due to the way in which ``b`` is constrained.
3819
3820 When the last type parameter has a phantom role (see :ref:`roles`), the derived
3821 ``Functor`` instance will not be produced using the usual algorithm. Instead,
3822 the entire value will be coerced. ::
3823
3824     data Phantom a = Z | S (Phantom a) deriving Functor
3825
3826 will produce the following instance: ::
3827
3828     instance Functor Phantom where
3829       fmap _ = coerce
3830
3831 When a type has no constructors, the derived ``Functor`` instance will
3832 simply force the (bottom) value of the argument using
3833 :ghc-flag:`-XEmptyCase`. ::
3834
3835     data V a deriving Functor
3836     type role V nominal
3837
3838 will produce
3839
3840     instance Functor V where
3841       fmap _ z = case z of
3842
3843 .. _deriving-foldable:
3844
3845 Deriving ``Foldable`` instances
3846 -------------------------------
3847
3848 With :ghc-flag:`-XDeriveFoldable`, one can derive ``Foldable`` instances for data types
3849 of kind ``* -> *``. For example, this declaration::
3850
3851     data Example a = Ex a Char (Example a) (Example Char)
3852       deriving Foldable
3853
3854 would generate the following instance::
3855
3856     instance Foldable Example where
3857       foldr f z (Ex a1 a2 a3 a4) = f a1 (foldr f z a3)
3858       foldMap f (Ex a1 a2 a3 a4) = mappend (f a1) (foldMap f a3)
3859
3860 The algorithm for :ghc-flag:`-XDeriveFoldable` is adapted from the
3861 :ghc-flag:`-XDeriveFunctor` algorithm, but it generates definitions for
3862 ``foldMap``, ``foldr``, and ``null`` instead of ``fmap``. In addition,
3863 :ghc-flag:`-XDeriveFoldable` filters out all constructor arguments on the RHS
3864 expression whose types do not mention the last type parameter, since those
3865 arguments do not need to be folded over.
3866
3867 When the type parameter has a phantom role (see :ref:`roles`),
3868 :ghc-flag:`-XDeriveFoldable` derives a trivial instance. For example, this
3869 declaration: ::
3870
3871     data Phantom a = Z | S (Phantom a)
3872
3873 will generate the following instance. ::
3874
3875     instance Foldable Phantom where
3876       foldMap _ _ = mempty
3877
3878 Similarly, when the type has no constructors, :ghc-flag:`-XDeriveFoldable` will
3879 derive a trivial instance: ::
3880
3881     data V a deriving Foldable
3882     type role V nominal
3883
3884 will generate the following. ::
3885
3886     instance Foldable V where
3887       foldMap _ _ = mempty
3888
3889 Here are the differences between the generated code for ``Functor`` and
3890 ``Foldable``:
3891
3892 #. When a bare type variable ``a`` is encountered, :ghc-flag:`-XDeriveFunctor`
3893 would generate ``f a`` for an ``fmap`` definition. :ghc-flag:`-XDeriveFoldable`
3894 would generate ``f a z`` for ``foldr``, ``f a`` for ``foldMap``, and ``False``
3895 for ``null``.
3896
3897 #. When a type that is not syntactically equivalent to ``a``, but which does
3898    contain ``a``, is encountered, :ghc-flag:`-XDeriveFunctor` recursively calls
3899    ``fmap`` on it. Similarly, :ghc-flag:`-XDeriveFoldable` would recursively call
3900    ``foldr`` and ``foldMap``. Depending on the context, ``null`` may recursively
3901    call ``null`` or ``all null``. For example, given ::
3902
3903        data F a = F (P a)
3904        data G a = G (P (a, Int))
3905        data H a = H (P (Q a))
3906
3907    ``Foldable`` deriving will produce ::
3908
3909        null (F x) = null x
3910        null (G x) = null x
3911        null (H x) = all null x
3912
3913 #. :ghc-flag:`-XDeriveFunctor` puts everything back together again at the end by
3914    invoking the constructor. :ghc-flag:`-XDeriveFoldable`, however, builds up a value
3915    of some type. For ``foldr``, this is accomplished by chaining applications
3916    of ``f`` and recursive ``foldr`` calls on the state value ``z``. For
3917    ``foldMap``, this happens by combining all values with ``mappend``. For ``null``,
3918    the values are usually combined with ``&&``. However, if any of the values is
3919    known to be ``False``, all the rest will be dropped. For example, ::
3920
3921        data SnocList a = Nil | Snoc (SnocList a) a
3922
3923    will not produce ::
3924
3925        null (Snoc xs _) = null xs && False
3926
3927    (which would walk the whole list), but rather ::
3928
3929        null (Snoc _ _) = False
3930
3931 There are some other differences regarding what data types can have derived
3932 ``Foldable`` instances:
3933
3934 #. Data types containing function types on the right-hand side cannot have
3935    derived ``Foldable`` instances.
3936
3937 #. ``Foldable`` instances can be derived for data types in which the last type
3938    parameter is existentially constrained or refined in a GADT. For example,
3939    this data type::
3940
3941        data E a where
3942            E1 :: (a ~ Int) => a   -> E a
3943            E2 ::              Int -> E Int
3944            E3 :: (a ~ Int) => a   -> E Int
3945            E4 :: (a ~ Int) => Int -> E a
3946
3947        deriving instance Foldable E
3948
3949    would have the following generated ``Foldable`` instance::
3950
3951        instance Foldable E where
3952            foldr f z (E1 e) = f e z
3953            foldr f z (E2 e) = z
3954            foldr f z (E3 e) = z
3955            foldr f z (E4 e) = z
3956
3957            foldMap f (E1 e) = f e
3958            foldMap f (E2 e) = mempty
3959            foldMap f (E3 e) = mempty
3960            foldMap f (E4 e) = mempty
3961
3962    Notice how every constructor of ``E`` utilizes some sort of existential
3963    quantification, but only the argument of ``E1`` is actually "folded over".
3964    This is because we make a deliberate choice to only fold over universally
3965    polymorphic types that are syntactically equivalent to the last type
3966    parameter. In particular:
3967
3968   -  We don't fold over the arguments of ``E1`` or ``E4`` beacause even though
3969      ``(a ~ Int)``, ``Int`` is not syntactically equivalent to ``a``.
3970
3971   -  We don't fold over the argument of ``E3`` because ``a`` is not universally
3972      polymorphic. The ``a`` in ``E3`` is (implicitly) existentially quantified,
3973      so it is not the same as the last type parameter of ``E``.
3974
3975 .. _deriving-traversable:
3976
3977 Deriving ``Traversable`` instances
3978 ----------------------------------
3979
3980 With :ghc-flag:`-XDeriveTraversable`, one can derive ``Traversable`` instances for data
3981 types of kind ``* -> *``. For example, this declaration::
3982
3983     data Example a = Ex a Char (Example a) (Example Char)
3984       deriving (Functor, Foldable, Traversable)
3985
3986 would generate the following ``Traversable`` instance::
3987
3988     instance Traversable Example where
3989       traverse f (Ex a1 a2 a3 a4)
3990         = fmap (\b1 b3 -> Ex b1 a2 b3 a4) (f a1) <*> traverse f a3
3991
3992 The algorithm for :ghc-flag:`-XDeriveTraversable` is adapted from the
3993 :ghc-flag:`-XDeriveFunctor` algorithm, but it generates a definition for ``traverse``
3994 instead of ``fmap``. In addition, :ghc-flag:`-XDeriveTraversable` filters out
3995 all constructor arguments on the RHS expression whose types do not mention the
3996 last type parameter, since those arguments do not produce any effects in a
3997 traversal.
3998
3999 When the type parameter has a phantom role (see :ref:`roles`),
4000 :ghc-flag:`-XDeriveTraversable` coerces its argument. For example, this
4001 declaration::
4002
4003     data Phantom a = Z | S (Phantom a) deriving Traversable
4004
4005 will generate the following instance::
4006
4007     instance Traversable Phantom where
4008       traverse _ z = pure (coerce z)
4009
4010 When the type has no constructors, :ghc-flag:`-XDeriveTraversable` will
4011 derive the laziest instance it can. ::
4012
4013     data V a deriving Traversable
4014     type role V nominal
4015
4016 will generate the following, using :ghc-flag:`-XEmptyCase`: ::
4017
4018     instance Traversable V where
4019       traverse _ z = pure (case z of)
4020
4021 Here are the differences between the generated code in each
4022 extension:
4023
4024 #. When a bare type variable ``a`` is encountered, both :ghc-flag:`-XDeriveFunctor` and
4025    :ghc-flag:`-XDeriveTraversable` would generate ``f a`` for an ``fmap`` and
4026    ``traverse`` definition, respectively.
4027
4028 #. When a type that is not syntactically equivalent to ``a``, but which does
4029    contain ``a``, is encountered, :ghc-flag:`-XDeriveFunctor` recursively calls
4030    ``fmap`` on it. Similarly, :ghc-flag:`-XDeriveTraversable` would recursively call
4031    ``traverse``.
4032
4033 #. :ghc-flag:`-XDeriveFunctor` puts everything back together again at the end by
4034    invoking the constructor. :ghc-flag:`-XDeriveTraversable` does something similar,
4035    but it works in an ``Applicative`` context by chaining everything together
4036    with ``(<*>)``.
4037
4038 Unlike :ghc-flag:`-XDeriveFunctor`, :ghc-flag:`-XDeriveTraversable` cannot be used on data
4039 types containing a function type on the right-hand side.
4040
4041 For a full specification of the algorithms used in :ghc-flag:`-XDeriveFunctor`,
4042 :ghc-flag:`-XDeriveFoldable`, and :ghc-flag:`-XDeriveTraversable`, see
4043 :ghc-wiki:`this wiki page <Commentary/Compiler/DeriveFunctor>`.
4044
4045 .. _deriving-data:
4046
4047 Deriving ``Data`` instances
4048 -------------------------------
4049
4050 .. ghc-flag:: -XDeriveDataTypeable
4051
4052     Enable automatic deriving of instances for the ``Data`` typeclass
4053
4054 .. _deriving-typeable:
4055
4056 Deriving ``Typeable`` instances
4057 -------------------------------
4058
4059 The class ``Typeable`` is very special:
4060
4061 -  ``Typeable`` is kind-polymorphic (see :ref:`kind-polymorphism`).
4062
4063 -  GHC has a custom solver for discharging constraints that involve
4064    class ``Typeable``, and handwritten instances are forbidden. This
4065    ensures that the programmer cannot subvert the type system by writing
4066    bogus instances.
4067
4068 -  Derived instances of ``Typeable`` may be declared if the
4069    :ghc-flag:`-XDeriveDataTypeable` extension is enabled, but they are ignored,
4070    and they may be reported as an error in a later version of the compiler.
4071
4072 -  The rules for solving \`Typeable\` constraints are as follows:
4073
4074    -  A concrete type constructor applied to some types. ::
4075
4076           instance (Typeable t1, .., Typeable t_n) =>
4077             Typeable (T t1 .. t_n)
4078
4079       This rule works for any concrete type constructor, including type
4080       constructors with polymorphic kinds. The only restriction is that
4081       if the type constructor has a polymorphic kind, then it has to be
4082       applied to all of its kinds parameters, and these kinds need to be
4083       concrete (i.e., they cannot mention kind variables).
4084
4085    -  ::
4086
4087           A type variable applied to some types.
4088           instance (Typeable f, Typeable t1, .., Typeable t_n) =>
4089             Typeable (f t1 .. t_n)
4090
4091    -  ::
4092
4093           A concrete type literal.
4094           instance Typeable 0       -- Type natural literals
4095           instance Typeable "Hello" -- Type-level symbols
4096
4097 .. _deriving-lift:
4098
4099 Deriving ``Lift`` instances
4100 ---------------------------
4101
4102 .. ghc-flag:: -XDeriveLift
4103
4104     :since: 8.0.1
4105
4106     Enable automatic deriving of instances for the ``Lift`` typeclass for
4107     Template Haskell.
4108
4109 The class ``Lift``, unlike other derivable classes, lives in
4110 ``template-haskell`` instead of ``base``. Having a data type be an instance of
4111 ``Lift`` permits its values to be promoted to Template Haskell expressions (of
4112 type ``ExpQ``), which can then be spliced into Haskell source code.
4113
4114 Here is an example of how one can derive ``Lift``:
4115
4116 ::
4117
4118     {-# LANGUAGE DeriveLift #-}
4119     module Bar where
4120
4121     import Language.Haskell.TH.Syntax
4122
4123     data Foo a = Foo a | a :^: a deriving Lift
4124
4125     {-
4126     instance (Lift a) => Lift (Foo a) where
4127         lift (Foo a)