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