blob: 433445e1dc3892c3afb8a73d2f57d8d2167dd74e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
Explanation: You can ❰merge❱ the alternatives of a union using a record with one
handler per alternative, like this:
┌─────────────────────────────────────────────────────────────────────┐
│ let union = < Left = +2 | Right : Bool > │
│ in let handlers = { Left = Natural/even, Right = λ(x : Bool) → x } │
│ in merge handlers union : Bool │
└─────────────────────────────────────────────────────────────────────┘
... but you must provide exactly one handler per alternative in the union. You
cannot omit any handlers
For example, the following expression is $_NOT valid:
Invalid: Missing ❰Right❱ handler
⇩
┌─────────────────────────────────────────────────┐
│ let handlers = { Left = Natural/even } │
│ in let union = < Left = +2 | Right : Bool > │
│ in merge handlers union : Bool │
└─────────────────────────────────────────────────┘
Note that you need to provide handlers for other alternatives even if those
alternatives are never used
You need to supply the following handlers:
↳ $txt0
|