mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-10 05:29:30 -06:00
28 lines
551 B
Haskell
28 lines
551 B
Haskell
module Param where
|
|
|
|
import AbsSrc
|
|
import SMacros
|
|
|
|
import Env
|
|
import STM
|
|
|
|
sizeParType :: [Constr] -> STM Env (Int,Int)
|
|
sizeParType cs = do
|
|
scs <- mapM sizeC cs
|
|
return (sum scs, length cs)
|
|
where
|
|
sizeC (Con c ts) = do
|
|
ats <- mapM (lookEnv parsizes) ts
|
|
return $ product ats
|
|
|
|
allParVals :: [Constr] -> STM Env [Exp]
|
|
allParVals cs = do
|
|
ess <- mapM alls cs
|
|
return $ concat ess
|
|
where
|
|
alls (Con c []) = do
|
|
return [constr c []]
|
|
alls (Con c ts) = do
|
|
ess <- mapM (lookEnv partypes) ts
|
|
return [constr c es | es <- sequence ess]
|