@@ -11,21 +11,25 @@ import Data.Maybe (Maybe(..))
11
11
import Data.Monoid (power )
12
12
import Data.Newtype (class Newtype , over2 , wrap )
13
13
14
+ -- ANCHOR: Point
14
15
newtype Point
15
- = Point
16
- { x :: Number
17
- , y :: Number
18
- }
16
+ = Point
17
+ { x :: Number
18
+ , y :: Number
19
+ }
20
+ -- ANCHOR_END: Point
19
21
20
22
instance showPoint :: Show Point where
21
23
show (Point p) =
22
24
" (" <> show p.x <> " , " <> show p.y <> " )"
23
25
26
+ -- ANCHOR: Complex
24
27
newtype Complex
25
28
= Complex
26
29
{ real :: Number
27
30
, imaginary :: Number
28
31
}
32
+ -- ANCHOR_END: Complex
29
33
30
34
instance showComplex :: Show Complex where
31
35
show (Complex c) =
@@ -83,11 +87,13 @@ instance ringComplex :: Ring Complex where
83
87
sub (Complex a) (Complex b) = Complex $ a - b
84
88
-}
85
89
90
+ -- ANCHOR: Shape
86
91
data Shape
87
- = Circle Point Number
88
- | Rectangle Point Number Number
89
- | Line Point Point
90
- | Text Point String
92
+ = Circle Point Number
93
+ | Rectangle Point Number Number
94
+ | Line Point Point
95
+ | Text Point String
96
+ -- ANCHOR_END: Shape
91
97
92
98
derive instance genericShape :: Generic Shape _
93
99
@@ -102,8 +108,9 @@ instance showShape :: Show Shape where
102
108
show (Text p s) = "(Text " <> show p <> " " <> show s <> ")"
103
109
-}
104
110
105
- data NonEmpty a
106
- = NonEmpty a (Array a )
111
+ -- ANCHOR: NonEmpty
112
+ data NonEmpty a = NonEmpty a (Array a )
113
+ -- ANCHOR_END: NonEmpty
107
114
108
115
instance eqNonEmpty :: Eq a => Eq (NonEmpty a ) where
109
116
eq (NonEmpty e1 a1) (NonEmpty e2 a2) = e1 == e2 && a1 == a2
@@ -125,9 +132,9 @@ instance functorNonEmpty :: Functor NonEmpty where
125
132
map func (NonEmpty e1 a1) = NonEmpty (func e1) (map func a1)
126
133
-}
127
134
128
- data Extended a
129
- = Infinite
130
- | Finite a
135
+ -- ANCHOR: Extended
136
+ data Extended a = Infinite | Finite a
137
+ -- ANCHOR_END: Extended
131
138
132
139
derive instance eqExtended :: Eq a => Eq (Extended a )
133
140
{-
@@ -156,10 +163,13 @@ instance foldableNonEmpty :: Foldable NonEmpty where
156
163
foldl func st (NonEmpty val arr) = foldl func st ([ val ] <> arr)
157
164
foldMap func (NonEmpty val arr) = foldMap func ([ val ] <> arr)
158
165
159
- data OneMore f a
160
- = OneMore a (f a )
166
+ -- ANCHOR: OneMore
167
+ data OneMore f a = OneMore a (f a )
168
+ -- ANCHOR_END: OneMore
161
169
170
+ -- ANCHOR: OneMore_Foldable
162
171
instance foldableOneMore :: Foldable f => Foldable (OneMore f ) where
172
+ -- ANCHOR_END: OneMore_Foldable
163
173
foldr func st (OneMore val more) = func val lastB
164
174
where
165
175
lastB = foldr func st more
@@ -184,20 +194,28 @@ unsafeMaximum :: Partial => Array Int -> Int
184
194
unsafeMaximum arr = case maximum arr of
185
195
Just m -> m
186
196
187
- class
188
- Monoid m <= Action m a where
189
- act :: m -> a -> a
197
+ -- ANCHOR: Action
198
+ class Monoid m <= Action m a where
199
+ act :: m -> a -> a
200
+ -- ANCHOR_END: Action
190
201
191
- newtype Multiply
192
- = Multiply Int
202
+ -- ANCHOR: Multiply
203
+ newtype Multiply = Multiply Int
204
+ -- ANCHOR_END: Multiply
193
205
206
+ -- ANCHOR: semigroupMultiply
194
207
instance semigroupMultiply :: Semigroup Multiply where
195
- append (Multiply n) (Multiply m) = Multiply (n * m)
208
+ append (Multiply n) (Multiply m) = Multiply (n * m)
209
+ -- ANCHOR_END: semigroupMultiply
196
210
211
+ -- ANCHOR: monoidMultiply
197
212
instance monoidMultiply :: Monoid Multiply where
198
- mempty = Multiply 1
213
+ mempty = Multiply 1
214
+ -- ANCHOR_END: monoidMultiply
199
215
216
+ -- ANCHOR: Multiply_Action
200
217
instance actionMultiplyInt :: Action Multiply Int where
218
+ -- ANCHOR_END: Multiply_Action
201
219
act (Multiply n) m = n * m
202
220
203
221
{-
@@ -227,14 +245,17 @@ instance actionMultiplyInt :: Action Multiply Int where
227
245
derive newtype instance showMultiply :: Show Multiply
228
246
derive newtype instance eqMultiply :: Eq Multiply
229
247
248
+ -- ANCHOR: actionMultiplyString
230
249
instance actionMultiplyString :: Action Multiply String where
250
+ -- ANCHOR_END: actionMultiplyString
231
251
act (Multiply n) s = power s n
232
252
233
253
instance actionArray :: Action m a => Action m (Array a ) where
234
254
act m arr = map (act m) arr
235
255
236
- newtype Self m
237
- = Self m
256
+ -- ANCHOR: Self
257
+ newtype Self m = Self m
258
+ -- ANCHOR_END: Self
238
259
239
260
instance actionSelf :: Monoid m => Action m (Self m ) where
240
261
act m1 (Self m2) = Self (m1 <> m2)
@@ -250,11 +271,14 @@ arrayHasDuplicates arr =
250
271
in
251
272
length arr /= (length $ nubByEq hashAndValEqual arr)
252
273
253
- newtype Hour
254
- = Hour Int
274
+ -- ANCHOR: Hour
275
+ newtype Hour = Hour Int
276
+ -- ANCHOR_END: Hour
255
277
278
+ -- ANCHOR: eqHour
256
279
instance eqHour :: Eq Hour where
257
- eq (Hour n) (Hour m) = mod n 12 == mod m 12
280
+ eq (Hour n) (Hour m) = mod n 12 == mod m 12
281
+ -- ANCHOR_END: eqHour
258
282
259
283
instance hashHour :: Hashable Hour where
260
284
hash (Hour h) = hash $ mod h 12
0 commit comments