summaryrefslogtreecommitdiff
path: root/src/runtime/haskell/PGF/Haskell.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/haskell/PGF/Haskell.hs')
-rw-r--r--src/runtime/haskell/PGF/Haskell.hs12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/runtime/haskell/PGF/Haskell.hs b/src/runtime/haskell/PGF/Haskell.hs
index e09f6635e..d77395518 100644
--- a/src/runtime/haskell/PGF/Haskell.hs
+++ b/src/runtime/haskell/PGF/Haskell.hs
@@ -2,7 +2,7 @@
-- with @gf -output-format=haskell -haskell=concrete@
{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies, FlexibleInstances #-}
module PGF.Haskell where
-import Control.Applicative((<$>))
+import Control.Applicative((<$>),(<*>))
import Data.Char(toUpper)
import Data.List(isPrefixOf)
import qualified Data.Map as M
@@ -54,9 +54,15 @@ class Has_s r a | r -> a where proj_s :: r -> a
-- | Haskell representation of the GF record type @{s:t}@
data R_s t = R_s t deriving (Eq,Ord,Show)
-instance (EnumAll t) => EnumAll (R_s t) where
- enumAll = (R_s <$> enumAll)
+instance (EnumAll t) => EnumAll (R_s t) where enumAll = R_s <$> enumAll
instance Has_s (R_s t) t where proj_s (R_s t) = t
-- | Coerce from any record type @{...,s:t,...}@ field to the supertype @{s:t}@
to_R_s r = R_s (proj_s r)
+
+
+-- *** Variants
+
+infixr 5 +++
+
+xs +++ ys = (++) <$> xs <*> ys \ No newline at end of file