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
|
[ 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" ] ]
]
|