summaryrefslogtreecommitdiff
path: root/src/compiler/GF/Infra
diff options
context:
space:
mode:
authorhallgren <hallgren@chalmers.se>2015-02-09 16:24:33 +0000
committerhallgren <hallgren@chalmers.se>2015-02-09 16:24:33 +0000
commit8e4e8da105547abec4fe27e837d13bf45d78e31b (patch)
treea86f579081644bb89bad7500febb4313e2b0c871 /src/compiler/GF/Infra
parent3509ee650dc3ec00af3c5039b6ac99bd92f45d7f (diff)
Translating linearization functions to Haskell: support for variants
By adding the flag -haskell=variants to the command line, GF will now generate linearization functions in Haskell that support variants. Variants are represented as lists in Haskell. Variants inside pre { ... } expressions are still ignored. TODO: apply some monad laws to generate more compact code (using an intermediate representation of the generated Haskell code, instead of pretty printing directly from the GF code).
Diffstat (limited to 'src/compiler/GF/Infra')
-rw-r--r--src/compiler/GF/Infra/Option.hs5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/compiler/GF/Infra/Option.hs b/src/compiler/GF/Infra/Option.hs
index 85e02e305..563fb017e 100644
--- a/src/compiler/GF/Infra/Option.hs
+++ b/src/compiler/GF/Infra/Option.hs
@@ -126,7 +126,7 @@ data CFGTransform = CFGNoLR
deriving (Show,Eq,Ord)
data HaskellOption = HaskellNoPrefix | HaskellGADT | HaskellLexical
- | HaskellConcrete
+ | HaskellConcrete | HaskellVariants
deriving (Show,Eq,Ord)
data Warning = WarnMissingLincat
@@ -521,7 +521,8 @@ haskellOptionNames =
[("noprefix", HaskellNoPrefix),
("gadt", HaskellGADT),
("lexical", HaskellLexical),
- ("concrete", HaskellConcrete)]
+ ("concrete", HaskellConcrete),
+ ("variants", HaskellVariants)]
-- | This is for bacward compatibility. Since GHC 6.12 we
-- started using the native Unicode support in GHC but it