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