Skip to content

Commit f18c4bc

Browse files
committed
refactor the pair matcher
1 parent fd3b392 commit f18c4bc

File tree

3 files changed

+10
-13
lines changed

3 files changed

+10
-13
lines changed

src/Control/Egison/Matcher/Collection.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ eqAs :: (Matcher m1 t1, Matcher m2 t2,
181181
eqAs m1 m2 xs ys = match
182182
dfs
183183
(xs, ys)
184-
(Pair m1 m2)
184+
(m1, m2)
185185
[ [mc| ([], []) -> True |]
186186
, [mc| ($x : $xs, #x : $ys) -> eqAs m1 m2 xs ys |]
187187
, [mc| _ -> False |]

src/Control/Egison/Matcher/Pair.hs

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@
55
-- Stability: experimental
66

77
module Control.Egison.Matcher.Pair
8-
( Pair(..)
9-
, tuple2
8+
( tuple2
109
, tuple2M
1110
)
1211
where
@@ -17,18 +16,16 @@ import Control.Egison.Match
1716
import Control.Egison.Matcher
1817
import Control.Egison.QQ
1918

20-
data Pair m1 m2 = Pair m1 m2
19+
instance (Matcher m1 t1, Matcher m2 t2) => Matcher (m1, m2) (t1, t2)
2120

22-
instance (Matcher m1 t1, Matcher m2 t2) => Matcher (Pair m1 m2) (t1, t2)
21+
tuple2 :: Pattern (PP t1, PP t2) (m1, m2) (t1, t2) (t1, t2)
22+
tuple2 _ (_, _) (t1, t2) = pure (t1, t2)
2323

24-
tuple2 :: Pattern (PP t1, PP t2) (Pair m1 m2) (t1, t2) (t1, t2)
25-
tuple2 _ (Pair _ _) (t1, t2) = pure (t1, t2)
24+
tuple2M :: (m1, m2) -> (t1, t2) -> (m1, m2)
25+
tuple2M (m1, m2) _ = (m1, m2)
2626

27-
tuple2M :: Pair m1 m2 -> (t1, t2) -> (m1, m2)
28-
tuple2M (Pair m1 m2) _ = (m1, m2)
29-
30-
instance (Eq a1, Matcher m1 a1, ValuePattern m1 a1, Eq a2, Matcher m2 a2, ValuePattern m2 a2) => ValuePattern (Pair m1 m2) (a1, a2) where
31-
value (e1, e2) () (Pair m1 m2) (v1, v2) =
27+
instance (Eq a1, Matcher m1 a1, ValuePattern m1 a1, Eq a2, Matcher m2 a2, ValuePattern m2 a2) => ValuePattern (m1, m2) (a1, a2) where
28+
value (e1, e2) () (m1, m2) (v1, v2) =
3229
if eqAs m1 e1 v1 && eqAs m2 e2 v2 then pure () else mzero
3330

3431
eqAs :: (Matcher m t, ValuePattern m t) => m -> t -> t -> Bool

test/Control/EgisonSpec.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ test_pair =
4242
[ testCase "pair" $ assertEqual "simple" (1, 2) $ match
4343
dfs
4444
(1, 2)
45-
(Pair Something Something)
45+
(Something, Something)
4646
[[mc| ($x, $y) -> (x, y) |]]
4747
]
4848

0 commit comments

Comments
 (0)