summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbjorn <bjorn@bringert.net>2008-10-03 08:18:24 +0000
committerbjorn <bjorn@bringert.net>2008-10-03 08:18:24 +0000
commit59cb392bdadba2df823209a2bdc346effdd739dc (patch)
tree2c5f3a1e1eb217821eaceb71a326d9e0918d9e49 /src
parent8290be0eb203044c9a378ab8fda2971ebd196fd8 (diff)
Don't build FV terms if there is exactly one variant.
Diffstat (limited to 'src')
-rw-r--r--src/PGF/Linearize.hs4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/PGF/Linearize.hs b/src/PGF/Linearize.hs
index 53bf9fdf4..8ea115d45 100644
--- a/src/PGF/Linearize.hs
+++ b/src/PGF/Linearize.hs
@@ -60,7 +60,9 @@ linTree pgf lang = lin
R ts -> R $ ts ++ (Data.List.map (kks . prCId) xs)
TM s -> R $ (TM s) : (Data.List.map (kks . prCId) xs)
lin (Fun fun es) = let argVariants = mapM (liftVariants . lin) es
- in FV [comp args $ look fun | args <- argVariants]
+ mkVariants [t] = t
+ mkVariants ts = FV ts
+ in mkVariants [comp args $ look fun | args <- argVariants]
lin (Lit (LStr s)) = R [kks (show s)] -- quoted
lin (Lit (LInt i)) = R [kks (show i)]
lin (Lit (LFlt d)) = R [kks (show d)]