Skip to content

Commit b6eec4d

Browse files
garybnatefaubion
authored andcommitted
Update for typelevel-prelude 5 & PS 0.13 (#41)
1 parent 82607b7 commit b6eec4d

File tree

6 files changed

+65
-62
lines changed

6 files changed

+65
-62
lines changed

bower.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
"purescript-unsafe-coerce": "^4.0.0",
2929
"purescript-partial": "^2.0.0",
3030
"purescript-maybe": "^4.0.0",
31-
"purescript-typelevel-prelude": "^4.0.0",
31+
"purescript-typelevel-prelude": "^5.0.0",
3232
"purescript-lists": "^5.0.0",
3333
"purescript-record": "^2.0.0",
3434
"purescript-enums": "^4.0.0"

src/Data/Functor/Variant.purs

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ import Data.Traversable as TF
3333
import Data.Variant.Internal (class Contractable, FProxy(..), class VariantFMatchCases) as Exports
3434
import Data.Variant.Internal (class Contractable, class VariantFMatchCases, class VariantTags, FProxy, RLProxy(..), RProxy(..), VariantFCase, VariantCase, contractWith, lookup, unsafeGet, unsafeHas, variantTags)
3535
import Partial.Unsafe (unsafeCrashWith)
36+
import Prim.Row as R
37+
import Prim.RowList as RL
3638
import Type.Equality (class TypeEquals)
3739
import Type.Proxy (Proxy(..))
38-
import Type.Row as R
39-
import Prim.Row as Row
4040
import Unsafe.Coerce (unsafeCoerce)
4141

4242
newtype VariantFRep f a = VariantFRep
@@ -64,12 +64,12 @@ instance functorVariantF ∷ Functor (VariantF r) where
6464
coerceV f a. VariantFRep f a VariantF r a
6565
coerceV = unsafeCoerce
6666

67-
class FoldableVFRL (rl :: R.RowList) (row :: # Type) | rl -> row where
67+
class FoldableVFRL (rl :: RL.RowList) (row :: # Type) | rl -> row where
6868
foldrVFRL :: forall a b. RLProxy rl -> (a -> b -> b) -> b -> VariantF row a -> b
6969
foldlVFRL :: forall a b. RLProxy rl -> (b -> a -> b) -> b -> VariantF row a -> b
7070
foldMapVFRL :: forall a m. Monoid m => RLProxy rl -> (a -> m) -> VariantF row a -> m
7171

72-
instance foldableNil :: FoldableVFRL R.Nil () where
72+
instance foldableNil :: FoldableVFRL RL.Nil () where
7373
foldrVFRL _ _ _ = case_
7474
foldlVFRL _ _ _ = case_
7575
foldMapVFRL _ _ = case_
@@ -78,41 +78,41 @@ instance foldableCons ::
7878
( IsSymbol k
7979
, TF.Foldable f
8080
, FoldableVFRL rl r
81-
, Row.Cons k (FProxy f) r r'
82-
) => FoldableVFRL (R.Cons k (FProxy f) rl) r' where
81+
, R.Cons k (FProxy f) r r'
82+
) => FoldableVFRL (RL.Cons k (FProxy f) rl) r' where
8383
foldrVFRL _ f b = on k (TF.foldr f b) (foldrVFRL (RLProxy :: RLProxy rl) f b)
8484
where k = SProxy :: SProxy k
8585
foldlVFRL _ f b = on k (TF.foldl f b) (foldlVFRL (RLProxy :: RLProxy rl) f b)
8686
where k = SProxy :: SProxy k
8787
foldMapVFRL _ f = on k (TF.foldMap f) (foldMapVFRL (RLProxy :: RLProxy rl) f)
8888
where k = SProxy :: SProxy k
8989

90-
class FoldableVFRL rl row <= TraversableVFRL (rl :: R.RowList) (row :: # Type) | rl -> row where
90+
class FoldableVFRL rl row <= TraversableVFRL (rl :: RL.RowList) (row :: # Type) | rl -> row where
9191
traverseVFRL :: forall f a b. Applicative f => RLProxy rl -> (a -> f b) -> VariantF row a -> f (VariantF row b)
9292

93-
instance traversableNil :: TraversableVFRL R.Nil () where
93+
instance traversableNil :: TraversableVFRL RL.Nil () where
9494
traverseVFRL _ f = case_
9595

9696
instance traversableCons ::
9797
( IsSymbol k
9898
, TF.Traversable f
9999
, TraversableVFRL rl r
100-
, Row.Cons k (FProxy f) r r'
100+
, R.Cons k (FProxy f) r r'
101101
, R.Union r rx r'
102-
) => TraversableVFRL (R.Cons k (FProxy f) rl) r' where
102+
) => TraversableVFRL (RL.Cons k (FProxy f) rl) r' where
103103
traverseVFRL _ f = on k (TF.traverse f >>> map (inj k))
104104
(traverseVFRL (RLProxy :: RLProxy rl) f >>> map expand)
105105
where k = SProxy :: SProxy k
106106

107107
instance foldableVariantF ::
108-
(R.RowToList row rl, FoldableVFRL rl row) =>
108+
(RL.RowToList row rl, FoldableVFRL rl row) =>
109109
TF.Foldable (VariantF row) where
110110
foldr = foldrVFRL (RLProxy :: RLProxy rl)
111111
foldl = foldlVFRL (RLProxy :: RLProxy rl)
112112
foldMap = foldMapVFRL (RLProxy :: RLProxy rl)
113113

114114
instance traversableVariantF ::
115-
(R.RowToList row rl, TraversableVFRL rl row) =>
115+
(RL.RowToList row rl, TraversableVFRL rl row) =>
116116
TF.Traversable (VariantF row) where
117117
traverse = traverseVFRL (RLProxy :: RLProxy rl)
118118
sequence = TF.sequenceDefault
@@ -192,7 +192,7 @@ on p f g r =
192192
-- | `show :: Int -> String`, or give the whole record an appropriate type.
193193
onMatch
194194
rl r r1 r2 r3 a b
195-
. R.RowToList r rl
195+
. RL.RowToList r rl
196196
VariantFMatchCases rl r1 a b
197197
R.Union r1 r2 r3
198198
Record r
@@ -234,7 +234,7 @@ case_ r = unsafeCrashWith case unsafeCoerce r of
234234
-- | ```
235235
match
236236
rl r r1 r2 a b
237-
. R.RowToList r rl
237+
. RL.RowToList r rl
238238
VariantFMatchCases rl r1 a b
239239
R.Union r1 () r2
240240
Record r
@@ -327,20 +327,20 @@ unvariantF v = case (unsafeCoerce v ∷ VariantFRep UnknownF Unit) of
327327
revariantF r a. UnvariantF r a -> VariantF r a
328328
revariantF (UnvariantF f) = f inj
329329

330-
class VariantFShows (rlR.RowList) x where
330+
class VariantFShows (rlRL.RowList) x where
331331
variantFShows RLProxy rl Proxy x L.List (VariantCase String)
332332

333-
instance showVariantFNilVariantFShows R.Nil x where
333+
instance showVariantFNilVariantFShows RL.Nil x where
334334
variantFShows _ _ = L.Nil
335335

336-
instance showVariantFCons ∷ (VariantFShows rs x, TypeEquals a (FProxy f), Show (f x), Show x) VariantFShows (R.Cons sym a rs) x where
336+
instance showVariantFCons ∷ (VariantFShows rs x, TypeEquals a (FProxy f), Show (f x), Show x) VariantFShows (RL.Cons sym a rs) x where
337337
variantFShows _ p =
338338
L.Cons (coerceShow show) (variantFShows (RLProxy RLProxy rs) p)
339339
where
340340
coerceShow (f x String) VariantCase String
341341
coerceShow = unsafeCoerce
342342

343-
instance showVariantF ∷ (R.RowToList r rl, VariantTags rl, VariantFShows rl a, Show a) Show (VariantF r a) where
343+
instance showVariantF ∷ (RL.RowToList r rl, VariantTags rl, VariantFShows rl a, Show a) Show (VariantF r a) where
344344
show v1 =
345345
let
346346
VariantFRep v = unsafeCoerce v1 VariantFRep VariantFCase a

src/Data/Variant.purs

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ import Data.Symbol (SProxy(..), class IsSymbol, reflectSymbol)
3232
import Data.Variant.Internal (class Contractable, class VariantMatchCases) as Exports
3333
import Data.Variant.Internal (class Contractable, class VariantMatchCases, class VariantTags, BoundedDict, BoundedEnumDict, RLProxy(..), RProxy(..), VariantCase, VariantRep(..), contractWith, lookup, lookupCardinality, lookupEq, lookupFirst, lookupFromEnum, lookupLast, lookupOrd, lookupPred, lookupSucc, lookupToEnum, unsafeGet, unsafeHas, variantTags)
3434
import Partial.Unsafe (unsafeCrashWith)
35-
import Type.Row as R
35+
import Prim.Row as R
36+
import Prim.RowList as RL
3637
import Unsafe.Coerce (unsafeCoerce)
3738

3839
foreign import data Variant ∷ # Type Type
@@ -111,7 +112,7 @@ on p f g r =
111112
-- | `show :: Int -> String`, or give the whole record an appropriate type.
112113
onMatch
113114
rl r r1 r2 r3 b
114-
. R.RowToList r rl
115+
. RL.RowToList r rl
115116
VariantMatchCases rl r1 b
116117
R.Union r1 r2 r3
117118
Record r
@@ -153,7 +154,7 @@ case_ r = unsafeCrashWith case unsafeCoerce r of
153154
-- | ```
154155
match
155156
rl r r1 r2 b
156-
. R.RowToList r rl
157+
. RL.RowToList r rl
157158
VariantMatchCases rl r1 b
158159
R.Union r1 () r2
159160
Record r
@@ -239,20 +240,20 @@ unvariant v = case (unsafeCoerce v ∷ VariantRep Unit) of
239240
revariant r. Unvariant r -> Variant r
240241
revariant (Unvariant f) = f inj
241242

242-
class VariantEqs (rlR.RowList) where
243+
class VariantEqs (rlRL.RowList) where
243244
variantEqs RLProxy rl L.List (VariantCase VariantCase Boolean)
244245

245-
instance eqVariantNilVariantEqs R.Nil where
246+
instance eqVariantNilVariantEqs RL.Nil where
246247
variantEqs _ = L.Nil
247248

248-
instance eqVariantCons ∷ (VariantEqs rs, Eq a) VariantEqs (R.Cons sym a rs) where
249+
instance eqVariantCons ∷ (VariantEqs rs, Eq a) VariantEqs (RL.Cons sym a rs) where
249250
variantEqs _ =
250251
L.Cons (coerceEq eq) (variantEqs (RLProxy RLProxy rs))
251252
where
252253
coerceEq (a a Boolean) VariantCase VariantCase Boolean
253254
coerceEq = unsafeCoerce
254255

255-
instance eqVariant ∷ (R.RowToList r rl, VariantTags rl, VariantEqs rl) Eq (Variant r) where
256+
instance eqVariant ∷ (RL.RowToList r rl, VariantTags rl, VariantEqs rl) Eq (Variant r) where
256257
eq v1 v2 =
257258
let
258259
c1 = unsafeCoerce v1 VariantRep VariantCase
@@ -262,13 +263,13 @@ instance eqVariant ∷ (R.RowToList r rl, VariantTags rl, VariantEqs rl) ⇒ Eq
262263
in
263264
lookupEq tags eqs c1 c2
264265

265-
class VariantBounded (rlR.RowList) where
266+
class VariantBounded (rlRL.RowList) where
266267
variantBounded RLProxy rl L.List (BoundedDict VariantCase)
267268

268-
instance boundedVariantNilVariantBounded R.Nil where
269+
instance boundedVariantNilVariantBounded RL.Nil where
269270
variantBounded _ = L.Nil
270271

271-
instance boundedVariantCons ∷ (VariantBounded rs, Bounded a) VariantBounded (R.Cons sym a rs) where
272+
instance boundedVariantCons ∷ (VariantBounded rs, Bounded a) VariantBounded (RL.Cons sym a rs) where
272273
variantBounded _ = L.Cons dict (variantBounded (RLProxy RLProxy rs))
273274
where
274275
dict BoundedDict VariantCase
@@ -280,7 +281,7 @@ instance boundedVariantCons ∷ (VariantBounded rs, Bounded a) ⇒ VariantBounde
280281
coerce a VariantCase
281282
coerce = unsafeCoerce
282283

283-
instance boundedVariant ∷ (R.RowToList r rl, VariantTags rl, VariantEqs rl, VariantOrds rl, VariantBounded rl) Bounded (Variant r) where
284+
instance boundedVariant ∷ (RL.RowToList r rl, VariantTags rl, VariantEqs rl, VariantOrds rl, VariantBounded rl) Bounded (Variant r) where
284285
top =
285286
let
286287
tags = variantTags (RLProxy RLProxy rl)
@@ -300,10 +301,10 @@ instance boundedVariant ∷ (R.RowToList r rl, VariantTags rl, VariantEqs rl, Va
300301
class VariantBounded rl VariantBoundedEnums rl where
301302
variantBoundedEnums RLProxy rl L.List (BoundedEnumDict VariantCase)
302303

303-
instance enumVariantNilVariantBoundedEnums R.Nil where
304+
instance enumVariantNilVariantBoundedEnums RL.Nil where
304305
variantBoundedEnums _ = L.Nil
305306

306-
instance enumVariantCons ∷ (VariantBoundedEnums rs, BoundedEnum a) VariantBoundedEnums (R.Cons sym a rs) where
307+
instance enumVariantCons ∷ (VariantBoundedEnums rs, BoundedEnum a) VariantBoundedEnums (RL.Cons sym a rs) where
307308
variantBoundedEnums _ = L.Cons dict (variantBoundedEnums (RLProxy RLProxy rs))
308309
where
309310
dict BoundedEnumDict VariantCase
@@ -330,7 +331,7 @@ instance enumVariantCons ∷ (VariantBoundedEnums rs, BoundedEnum a) ⇒ Variant
330331
coerceCardinality Cardinality a Int
331332
coerceCardinality = unsafeCoerce
332333

333-
instance enumVariant ∷ (R.RowToList r rl, VariantTags rl, VariantEqs rl, VariantOrds rl, VariantBoundedEnums rl) Enum (Variant r) where
334+
instance enumVariant ∷ (RL.RowToList r rl, VariantTags rl, VariantEqs rl, VariantOrds rl, VariantBoundedEnums rl) Enum (Variant r) where
334335
pred a =
335336
let
336337
rep = unsafeCoerce a VariantRep VariantCase
@@ -351,7 +352,7 @@ instance enumVariant ∷ (R.RowToList r rl, VariantTags rl, VariantEqs rl, Varia
351352
in
352353
coerce $ lookupSucc rep tags bounds dicts
353354

354-
instance boundedEnumVariant ∷ (R.RowToList r rl, VariantTags rl, VariantEqs rl, VariantOrds rl, VariantBoundedEnums rl) BoundedEnum (Variant r) where
355+
instance boundedEnumVariant ∷ (RL.RowToList r rl, VariantTags rl, VariantEqs rl, VariantOrds rl, VariantBoundedEnums rl) BoundedEnum (Variant r) where
355356
cardinality =
356357
Cardinality $ lookupCardinality $ variantBoundedEnums (RLProxy RLProxy rl)
357358

@@ -371,20 +372,20 @@ instance boundedEnumVariant ∷ (R.RowToList r rl, VariantTags rl, VariantEqs rl
371372
in
372373
coerceV $ lookupToEnum n tags dicts
373374

374-
class VariantOrds (rlR.RowList) where
375+
class VariantOrds (rlRL.RowList) where
375376
variantOrds RLProxy rl L.List (VariantCase VariantCase Ordering)
376377

377-
instance ordVariantNilVariantOrds R.Nil where
378+
instance ordVariantNilVariantOrds RL.Nil where
378379
variantOrds _ = L.Nil
379380

380-
instance ordVariantCons ∷ (VariantOrds rs, Ord a) VariantOrds (R.Cons sym a rs) where
381+
instance ordVariantCons ∷ (VariantOrds rs, Ord a) VariantOrds (RL.Cons sym a rs) where
381382
variantOrds _ =
382383
L.Cons (coerceOrd compare) (variantOrds (RLProxy RLProxy rs))
383384
where
384385
coerceOrd (a a Ordering) VariantCase VariantCase Ordering
385386
coerceOrd = unsafeCoerce
386387

387-
instance ordVariant ∷ (R.RowToList r rl, VariantTags rl, VariantEqs rl, VariantOrds rl) Ord (Variant r) where
388+
instance ordVariant ∷ (RL.RowToList r rl, VariantTags rl, VariantEqs rl, VariantOrds rl) Ord (Variant r) where
388389
compare v1 v2 =
389390
let
390391
c1 = unsafeCoerce v1 VariantRep VariantCase
@@ -394,20 +395,20 @@ instance ordVariant ∷ (R.RowToList r rl, VariantTags rl, VariantEqs rl, Varian
394395
in
395396
lookupOrd tags ords c1 c2
396397

397-
class VariantShows (rlR.RowList) where
398+
class VariantShows (rlRL.RowList) where
398399
variantShows RLProxy rl L.List (VariantCase String)
399400

400-
instance showVariantNilVariantShows R.Nil where
401+
instance showVariantNilVariantShows RL.Nil where
401402
variantShows _ = L.Nil
402403

403-
instance showVariantCons ∷ (VariantShows rs, Show a) VariantShows (R.Cons sym a rs) where
404+
instance showVariantCons ∷ (VariantShows rs, Show a) VariantShows (RL.Cons sym a rs) where
404405
variantShows _ =
405406
L.Cons (coerceShow show) (variantShows (RLProxy RLProxy rs))
406407
where
407408
coerceShow (a String) VariantCase String
408409
coerceShow = unsafeCoerce
409410

410-
instance showVariant ∷ (R.RowToList r rl, VariantTags rl, VariantShows rl) Show (Variant r) where
411+
instance showVariant ∷ (RL.RowToList r rl, VariantTags rl, VariantShows rl) Show (Variant r) where
411412
show v1 =
412413
let
413414
VariantRep v = unsafeCoerce v1 VariantRep VariantCase

src/Data/Variant/Internal.purs

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ module Data.Variant.Internal
2222
, BoundedEnumDict
2323
, impossible
2424
, module Exports
25+
, module Type.Data.Row
26+
, module Type.Data.RowList
2527
) where
2628

2729
import Prelude
@@ -32,11 +34,12 @@ import Data.Maybe (Maybe(..))
3234
import Data.Maybe as M
3335
import Data.Symbol (class IsSymbol, SProxy(SProxy), reflectSymbol)
3436
import Partial.Unsafe (unsafeCrashWith)
37+
import Prim.Row as R
38+
import Prim.RowList as RL
3539
import Record.Unsafe (unsafeGet, unsafeHas) as Exports
40+
import Type.Data.Row (RProxy(..))
41+
import Type.Data.RowList (RLProxy(..))
3642
import Type.Equality (class TypeEquals)
37-
import Type.Row (RProxy(..), RLProxy(..)) as Exports
38-
import Type.Row (RProxy, RLProxy(..))
39-
import Type.Row as R
4043

4144
-- | Proxy for a `Functor`.
4245
data FProxy (aType Type) = FProxy
@@ -46,41 +49,41 @@ newtype VariantRep a = VariantRep
4649
, value a
4750
}
4851

49-
class VariantMatchCases (rlR.RowList) (vo ∷ # Type) b | rl vo b
52+
class VariantMatchCases (rlRL.RowList) (vo ∷ # Type) b | rl vo b
5053

5154
instance variantMatchCons
5255
∷ ( VariantMatchCases rl vo' b
5356
, R.Cons sym a vo' vo
5457
, TypeEquals k (a b)
5558
)
56-
VariantMatchCases (R.Cons sym k rl) vo b
59+
VariantMatchCases (RL.Cons sym k rl) vo b
5760

5861
instance variantMatchNil
59-
VariantMatchCases R.Nil () b
62+
VariantMatchCases RL.Nil () b
6063

61-
class VariantFMatchCases (rlR.RowList) (vo ∷ # Type) a b | rl vo a b
64+
class VariantFMatchCases (rlRL.RowList) (vo ∷ # Type) a b | rl vo a b
6265

6366
instance variantFMatchCons
6467
∷ ( VariantFMatchCases rl vo' a b
6568
, R.Cons sym (FProxy f) vo' vo
6669
, TypeEquals k (f a b)
6770
)
68-
VariantFMatchCases (R.Cons sym k rl) vo a b
71+
VariantFMatchCases (RL.Cons sym k rl) vo a b
6972

7073
instance variantFMatchNil
71-
VariantFMatchCases R.Nil () a b
74+
VariantFMatchCases RL.Nil () a b
7275

7376
foreign import data VariantCaseType
7477

7578
foreign import data VariantFCaseType Type
7679

77-
class VariantTags (rlR.RowList) where
80+
class VariantTags (rlRL.RowList) where
7881
variantTags RLProxy rl L.List String
7982

80-
instance variantTagsNilVariantTags R.Nil where
83+
instance variantTagsNilVariantTags RL.Nil where
8184
variantTags _ = L.Nil
8285

83-
instance variantTagsCons ∷ (VariantTags rs, IsSymbol sym) VariantTags (R.Cons sym a rs) where
86+
instance variantTagsCons ∷ (VariantTags rs, IsSymbol sym) VariantTags (RL.Cons sym a rs) where
8487
variantTags _ = L.Cons (reflectSymbol (SProxy SProxy sym)) (variantTags (RLProxy RLProxy rs))
8588

8689
-- | A specialized lookup function which bails early. Foldable's `elem`
@@ -249,7 +252,7 @@ class Contractable gt lt where
249252
contractWith f a. Alternative f RProxy gt RProxy lt String a f a
250253

251254
instance contractWithInstance
252-
∷ ( R.RowToList lt ltl
255+
∷ ( RL.RowToList lt ltl
253256
, R.Union lt a gt
254257
, VariantTags ltl
255258
)

0 commit comments

Comments
 (0)