summaryrefslogtreecommitdiff
path: root/src/GF/Canon
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2007-10-03 16:04:30 +0000
committeraarne <aarne@cs.chalmers.se>2007-10-03 16:04:30 +0000
commit17962eef1a5620e0762157d71fac20d9bb6547f7 (patch)
treef534595ecd4807278daa45ac42b4309cc06b4dc9 /src/GF/Canon
parente4ab0e274bcbdc1430521ae5caf4c9a7bddefd25 (diff)
added optimization to GrammarToGFCC
Diffstat (limited to 'src/GF/Canon')
-rw-r--r--src/GF/Canon/GFCC/CheckGFCC.hs8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/GF/Canon/GFCC/CheckGFCC.hs b/src/GF/Canon/GFCC/CheckGFCC.hs
index a94e0e1fb..05f591627 100644
--- a/src/GF/Canon/GFCC/CheckGFCC.hs
+++ b/src/GF/Canon/GFCC/CheckGFCC.hs
@@ -25,8 +25,12 @@ checkGFCC gfcc = do
checkConcrete :: GFCC -> (CId,Concr) -> IO ((CId,Concr),Bool)
checkConcrete gfcc (lang,cnc) =
labelBoolIO ("happened in language " ++ printTree lang) $ do
- (rs,bs) <- mapM (checkLin gfcc lang) (linRules cnc) >>= return . unzip
+ (rs,bs) <- mapM checkl (Map.assocs cnc) >>= return . unzip
return ((lang,Map.fromAscList rs),and bs)
+ where
+ checkl r@(CId f,_) = case head f of
+ '_' -> return (r,True)
+ _ -> checkLin gfcc lang r
checkLin :: GFCC -> CId -> (CId,Term) -> IO ((CId,Term),Bool)
checkLin gfcc lang (f,t) =
@@ -89,7 +93,7 @@ checkTerm (args,val) trm = case inferTerm args trm of
putStrLn $ "term: " ++ printTree trm ++
"\nexpected type: " ++ printTree val ++
"\ninferred type: " ++ printTree ty
- return (trm,False)
+ return (t,False)
Bad s -> do
putStrLn s
return (trm,False)