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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
[ Header 1
( "lhs-test", [], [] )
[ Str "lhs", Space, Str "test" ]
, Para
[ Code
( "", [], [] ) "unsplit"
, Space
, Str "is"
, Space
, Str "an"
, Space
, Str "arrow"
, Space
, Str "that"
, Space
, Str "takes"
, Space
, Str "a"
, Space
, Str "pair"
, Space
, Str "of"
, Space
, Str "values"
, Space
, Str "and"
, Space
, Str "combines"
, Space
, Str "them"
, Space
, Str "to"
, SoftBreak
, Str "return"
, Space
, Str "a"
, Space
, Str "single"
, Space
, Str "value:"
]
, CodeBlock
( ""
,
[ "haskell", "literate" ]
, []
) "unsplit :: (Arrow a) => (b -> c -> d) -> a (b, c) d\nunsplit = arr . uncurry\n -- arr (\\op (x,y) -> x `op` y)"
, Para
[ Code
( "", [], [] ) "(***)"
, Space
, Str "combines"
, Space
, Str "two"
, Space
, Str "arrows"
, Space
, Str "into"
, Space
, Str "a"
, Space
, Str "new"
, Space
, Str "arrow"
, Space
, Str "by"
, Space
, Str "running"
, Space
, Str "the"
, Space
, Str "two"
, Space
, Str "arrows"
, Space
, Str "on"
, Space
, Str "a"
, SoftBreak
, Str "pair"
, Space
, Str "of"
, Space
, Str "values"
, Space
, Str "(one"
, Space
, Str "arrow"
, Space
, Str "on"
, Space
, Str "the"
, Space
, Str "first"
, Space
, Str "item"
, Space
, Str "of"
, Space
, Str "the"
, Space
, Str "pair"
, Space
, Str "and"
, Space
, Str "one"
, Space
, Str "arrow"
, Space
, Str "on"
, Space
, Str "the"
, SoftBreak
, Str "second"
, Space
, Str "item"
, Space
, Str "of"
, Space
, Str "the"
, Space
, Str "pair)."
]
, CodeBlock
( "", [], [] ) "f *** g = first f >>> second g"
, Para
[ Str "Block", Space, Str "quote:" ]
, BlockQuote
[ Para [ Str "foo", Space, Str "bar" ] ]
]
|