diff options
| author | aarne <unknown> | 2003-10-07 15:17:55 +0000 |
|---|---|---|
| committer | aarne <unknown> | 2003-10-07 15:17:55 +0000 |
| commit | 889e5a92e4e0c40ab249f9f86d0fa2647132d87a (patch) | |
| tree | d9dd9687ee2d8a735b65f9b617f3f1a607666615 /src/GF/Grammar | |
| parent | 0988010e33fabc02090490b4a562a53fa9a08780 (diff) | |
Updates for editor. Dummies for hugs.
Diffstat (limited to 'src/GF/Grammar')
| -rw-r--r-- | src/GF/Grammar/LookAbs.hs | 6 | ||||
| -rw-r--r-- | src/GF/Grammar/MMacros.hs | 12 | ||||
| -rw-r--r-- | src/GF/Grammar/TypeCheck.hs | 1 |
3 files changed, 13 insertions, 6 deletions
diff --git a/src/GF/Grammar/LookAbs.hs b/src/GF/Grammar/LookAbs.hs index 04b6286e9..8400d9af5 100644 --- a/src/GF/Grammar/LookAbs.hs +++ b/src/GF/Grammar/LookAbs.hs @@ -73,9 +73,9 @@ refsForType compat gr binds val = funRulesOf :: GFCGrammar -> [(Fun,Type)] funRulesOf gr = ---- funRulesForLiterals ++ - [((i,f),typ) | (i, ModMod m) <- modules gr, - mtype m == MTAbstract, - (f, C.AbsFun typ _) <- tree2list (jments m)] + [((i,f),typ) | (i, ModMod m) <- modules gr, + mtype m == MTAbstract, + (f, C.AbsFun typ _) <- tree2list (jments m)] allCatsOf :: GFCGrammar -> [(Cat,Context)] allCatsOf gr = diff --git a/src/GF/Grammar/MMacros.hs b/src/GF/Grammar/MMacros.hs index cea8af11a..15e9b3c45 100644 --- a/src/GF/Grammar/MMacros.hs +++ b/src/GF/Grammar/MMacros.hs @@ -255,14 +255,20 @@ identVar (Vr x) = return x identVar _ = Bad "not a variable" --- light-weight rename for user interaction +-- light-weight rename for user interaction; also change names of internal vars qualifTerm :: Ident -> Term -> Term qualifTerm m = qualif [] where qualif xs t = case t of - Abs x b -> Abs x $ qualif (x:xs) b + Abs x b -> let x' = chV x in Abs x' $ qualif (x':xs) b Prod x a b -> Prod x (qualif xs a) $ qualif (x:xs) b - Vr x | notElem x xs -> Q m x + Vr x -> let x' = chV x in if (elem x' xs) then (Vr x') else (Q m x) Cn c -> Q m c Con c -> QC m c _ -> composSafeOp (qualif xs) t + chV x = string2var $ prIdent x + +string2var :: String -> Ident +string2var s = case s of + c:'_':i -> identV (readIntArg i,[c]) --- + _ -> zIdent s diff --git a/src/GF/Grammar/TypeCheck.hs b/src/GF/Grammar/TypeCheck.hs index 2445d50ad..45a0d7c36 100644 --- a/src/GF/Grammar/TypeCheck.hs +++ b/src/GF/Grammar/TypeCheck.hs @@ -123,6 +123,7 @@ possibleConstraint gr (u,v) = errVal True $ do where cts t u = isUnknown t || isUnknown u || case (t,u) of (Q m c, Q n d) -> c == d || notCan (m,c) || notCan (n,d) + (QC m c, QC n d) -> c == d (App f a, App g b) -> cts f g && cts a b (Abs x b, Abs y c) -> cts b c (Prod x a f, Prod y b g) -> cts a b && cts f g |
