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