mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-08-19 18:56:21 -06:00
make the PMCFG generation strict
This commit is contained in:
@@ -74,14 +74,15 @@ pmcfgForm g t ctxt ty = do
|
|||||||
let (ms,s',t',arg_params) = apply 0 Map.empty unit ctxt t []
|
let (ms,s',t',arg_params) = apply 0 Map.empty unit ctxt t []
|
||||||
let v = eval g [] s' t' []
|
let v = eval g [] s' t' []
|
||||||
(ms,_,_,fn) <- breakDown g ms unit 0 [] v ty (return []) empty
|
(ms,_,_,fn) <- breakDown g ms unit 0 [] v ty (return []) empty
|
||||||
fmap nubOrd $ runGenM g ms [] $ do
|
res <- fmap nubOrd $ runGenM g ms [] $ do
|
||||||
(r,rs,v,res_params) <- fn
|
(r,rs,v,res_params) <- fn
|
||||||
(subst,arg_params) <- mapAccumM params2int Map.empty arg_params
|
(subst,arg_params) <- mapAccumM params2int Map.empty arg_params
|
||||||
(subst,res_params) <- params2int subst res_params
|
(subst,res_params) <- params2int subst res_params
|
||||||
(subst,lin_idx) <- params2int' subst r rs
|
(subst,lin_idx) <- params2int' subst r rs
|
||||||
(subst,seq) <- flatten subst v
|
(subst,seq) <- flatten subst v
|
||||||
qs <- quantifiers (Map.toList subst)
|
qs <- quantifiers (Map.toList subst)
|
||||||
return (Rule qs res_params arg_params lin_idx seq)
|
return (Rule qs res_params arg_params lin_idx seq)
|
||||||
|
length res `seq` return res
|
||||||
where
|
where
|
||||||
Gl sgr _ _ = g
|
Gl sgr _ _ = g
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user