diff options
Diffstat (limited to 'src/runtime')
| -rw-r--r-- | src/runtime/haskell/PGF/Haskell.hs | 12 |
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 |
