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