git.iko.soy/purescript-literals
on main help sign in
Add eq instances
commitfbd7ba9dc34540a72b8c13b11c9608a39bb6d9b2 authorJan Vincent Liwanag <jvliwanag@gmail.com> dateTue 3 Mar 2020, 17:43 (7 years ago) parent90f1546
3 files changed+19−3
src/Literals/Literal.purs+5 src/Literals/Undefined.purs+5 test/Main.purs+9−3
src/Literals/Literal.purs+5
@@ -1,8 +1,13 @@
11module Literals.Literal where
22
3+import Prelude
4+
35import Unsafe.Coerce (unsafeCoerce)
46
57foreign import data Literal :: Type -> Symbol -> Type
68
9+instance literalEq :: Eq (Literal typ sym) where
10+ eq _ _ = true
11+
712toValue :: ∀ s a. Literal a s -> a
813toValue = unsafeCoerce
src/Literals/Undefined.purs+5
@@ -1,5 +1,10 @@
11module Literals.Undefined where
22
3+import Prelude
4+
35foreign import data Undefined :: Type
46
57foreign import undefined :: Undefined
8+
9+instance undefinedEq :: Eq Undefined where
10+ eq _ _ = true
test/Main.purs+9−3
@@ -4,7 +4,8 @@ import Prelude
44
55import Effect (Effect)
66import Literals (NumberLit, StringLit, IntLit, intLit, numberLit, stringLit)
7−import Test.Assert (assertEqual)
7+import Literals.Undefined (undefined)
8+import Test.Assert (assertEqual, assertTrue)
89import Unsafe.Coerce (unsafeCoerce)
910
1011
@@ -18,14 +19,19 @@ main = do
1819 { actual: unsafeCoerce (numberLit :: NumberLit "8.0")
1920 , expected: 8.0
2021 }
21− assertEqual { actual: unsafeCoerce (numberLit :: NumberLit "-8.0")
22+ assertEqual
23+ { actual: unsafeCoerce (numberLit :: NumberLit "-8.0")
2224 , expected: -8.0
2325 }
2426 assertEqual
2527 { actual: unsafeCoerce (intLit :: IntLit "8")
2628 , expected: 8
2729 }
28− assertEqual { actual: unsafeCoerce (intLit :: IntLit "-8")
30+ assertEqual
31+ { actual: unsafeCoerce (intLit :: IntLit "-8")
2932 , expected: -8
3033 }
3134
35+ -- Eq instance
36+ assertTrue $ undefined == undefined
37+ assertTrue $ (stringLit :: StringLit "foo") == (stringLit :: StringLit "foo")