summaryrefslogtreecommitdiff
path: root/src/PGF
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2008-10-03 07:57:40 +0000
committeraarne <aarne@cs.chalmers.se>2008-10-03 07:57:40 +0000
commit759ee4f926107eb2babf665261b3e9e034b8a2f1 (patch)
tree625211e9d3e4762018a8658c140850416bcb282f /src/PGF
parent07b38706990dc23784928eb5455836316451c147 (diff)
fixed the over-expansion of record variants in PGF.Linearize
Diffstat (limited to 'src/PGF')
-rw-r--r--src/PGF/Linearize.hs11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/PGF/Linearize.hs b/src/PGF/Linearize.hs
index 3db937a19..53bf9fdf4 100644
--- a/src/PGF/Linearize.hs
+++ b/src/PGF/Linearize.hs
@@ -67,9 +67,18 @@ linTree pgf lang = lin
lin (Var x) = TM (prCId x)
lin (Meta i) = TM (show i)
- comp = compute pgf lang
+ comp ls t = variants [compute pgf lang ts t | ts <- combinations (map unvariants ls)]
look = lookLin pgf lang
+variants :: [Term] -> Term
+variants ts = case ts of
+ [t] -> t
+ _ -> FV ts
+
+unvariants :: Term -> [Term]
+unvariants t = case t of
+ FV ts -> ts
+ _ -> [t]
compute :: PGF -> CId -> [Term] -> Term -> Term
compute pgf lang args = comp where