open-witness 0.4 → 0.4.0.1
raw patch · 4 files changed
+25/−20 lines, 4 files
Files
- open-witness.cabal +1/−1
- src/Data/OpenWitness.hs +6/−1
- src/Data/OpenWitness/ST.hs +1/−1
- test/Object.hs +17/−17
open-witness.cabal view
@@ -1,6 +1,6 @@ cabal-version: >=1.14 name: open-witness-version: 0.4+version: 0.4.0.1 x-follows-version-policy: license: BSD3 license-file: LICENSE
src/Data/OpenWitness.hs view
@@ -35,7 +35,12 @@ newtype OpenWitness :: * -> forall (k :: *). k -> * where { MkOpenWitness :: Integer -> OpenWitness s a;- } deriving Eq;+ };++ instance Eq (OpenWitness s a) where+ {+ (MkOpenWitness p) == (MkOpenWitness q) = p == q;+ }; instance TestHetEquality (OpenWitness s) where {
src/Data/OpenWitness/ST.hs view
@@ -26,7 +26,7 @@ fixST :: (a -> ST s a) -> ST s a; fixST = mfix; - type STRef = OpenWitness;+ type STRef s = OpenWitness s; newSTRef :: a -> ST s (STRef s a); newSTRef a = do
test/Object.hs view
@@ -1,24 +1,24 @@ module Object where {- import Data.Witness;- import Data.OpenWitness;+ import Data.Witness;+ import Data.OpenWitness; - data Object s = forall a. MkObject (OpenWitness s a) a;+ data Object s = forall a. MkObject (OpenWitness s a) a; - matchObject :: OpenWitness s b -> Object s -> Maybe b;- matchObject uqb (MkObject uqa a) = do- {- MkEqualType <- testEquality uqa uqb;- return a;- };+ matchObject :: OpenWitness s b -> Object s -> Maybe b;+ matchObject uqb (MkObject uqa a) = do+ {+ Refl <- testEquality uqa uqb;+ return a;+ }; - makeConversions :: OpenWitness s b -> (b -> Object s,Object s -> Maybe b);- makeConversions wit = (MkObject wit,matchObject wit);+ makeConversions :: OpenWitness s b -> (b -> Object s,Object s -> Maybe b);+ makeConversions wit = (MkObject wit,matchObject wit); - getConversions :: OW s (b -> Object s,Object s -> Maybe b);- getConversions = do- {- wit <- newOpenWitnessOW;- return (makeConversions wit);- };+ getConversions :: OW s (b -> Object s,Object s -> Maybe b);+ getConversions = do+ {+ wit <- newOpenWitnessOW;+ return (makeConversions wit);+ }; }