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