Field lock in MkResource.

Field lock in MkResource.
Terrible bug fixed in Check Grammar.
This commit is contained in:
aarne
2003-11-13 08:17:28 +00:00
parent eb24522848
commit 25c8690586
8 changed files with 57 additions and 28 deletions

View File

@@ -154,14 +154,14 @@ mapP f p = case p of
Nope -> Nope
-- this is what happens when matching two values in the same module
unifPerhaps :: Perhaps a b -> Perhaps a b -> Err (Perhaps a b)
unifPerhaps :: (Eq a, Eq b) => Perhaps a b -> Perhaps a b -> Err (Perhaps a b)
unifPerhaps p1 p2 = case (p1,p2) of
(Nope, _) -> return p2
(_, Nope) -> return p1
_ -> Bad "update conflict"
_ -> if p1==p2 then return p1 else Bad "update conflict"
-- this is what happens when updating a module extension
updatePerhaps :: b -> Perhaps a b -> Perhaps a b -> Err (Perhaps a b)
updatePerhaps :: (Eq a,Eq b) => b -> Perhaps a b -> Perhaps a b -> Err (Perhaps a b)
updatePerhaps old p1 p2 = case (p1,p2) of
(Yes a, Nope) -> return $ may old
(May older,Nope) -> return $ may older
@@ -169,7 +169,8 @@ updatePerhaps old p1 p2 = case (p1,p2) of
_ -> unifPerhaps p1 p2
-- here the value is copied instead of referred to; used for oper types
updatePerhapsHard :: b -> Perhaps a b -> Perhaps a b -> Err (Perhaps a b)
updatePerhapsHard :: (Eq a, Eq b) => b ->
Perhaps a b -> Perhaps a b -> Err (Perhaps a b)
updatePerhapsHard old p1 p2 = case (p1,p2) of
(Yes a, Nope) -> return $ yes a
(May older,Nope) -> return $ may older