on master help sign in
Update comment, re: append
ed195a6Sridhar Ratnakumar
src/JRec.hs+1−1
@@ -45,7 +45,7 @@ unField _ (_ R.:= value) = value
45--
45--
46-- O(n + m) type check complexity.
46-- O(n + m) type check complexity.
47--
47--
48−-- FIXME: overwrites all indices (see spec)
48+-- FIXME: See spec for a bug when there are duplicates.
49append ::
49append ::
50 forall lhs rhs res.
50 forall lhs rhs res.
51 ( KnownNat (R.RecSize lhs),
51 ( KnownNat (R.RecSize lhs),
test/JRecSpec.hs+5−2
@@ -50,7 +50,10 @@ spec = do
50 Rec (#a := 1) `append` Rec (#b := 2)
50 Rec (#a := 1) `append` Rec (#b := 2)
51 `shouldBe` Rec (#a := 1, #b := 2)
51 `shouldBe` Rec (#a := 1, #b := 2)
52 it "append with duplicates" $ do
52 it "append with duplicates" $ do
53− pendingWith "append is overwriting all duplicate fields with same value"
53+ -- `append` will not deal with duplicates; based on current
54+ -- implementation, the last value (here, 8) will overwrite all duplicate
55+ -- fields. See `union` if you want to deal with duplicates sensibly.
56+ pendingWith "append should just append?"
54 let r1 = Rec (#b := 5, #a := 6)
57 let r1 = Rec (#b := 5, #a := 6)
55 r2 = Rec (#c := 7, #a := 8)
58 r2 = Rec (#c := 7, #a := 8)
56 r1 `append` r2
59 r1 `append` r2
@@ -59,7 +62,7 @@ spec = do
59 it "simple union" $ do
62 it "simple union" $ do
60 Rec (#a := 1) `union` Rec (#b := 2)
63 Rec (#a := 1) `union` Rec (#b := 2)
61 `shouldBe` Rec (#a := 1, #b := 2)
64 `shouldBe` Rec (#a := 1, #b := 2)
62− it "union with duplicates" $ do
65+ it "union with duplicates (left-biased)" $ do
63 let r1 = Rec (#b := 5, #a := 6)
66 let r1 = Rec (#b := 5, #a := 6)
64 r2 = Rec (#c := 7, #a := 8)
67 r2 = Rec (#c := 7, #a := 8)
65 r1 `union` r2
68 r1 `union` r2