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