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