diff options
Diffstat (limited to 'src/runtime/haskell')
| -rw-r--r-- | src/runtime/haskell/PGF.hs | 1 | ||||
| -rw-r--r-- | src/runtime/haskell/PGF/Generate.hs | 4 |
2 files changed, 5 insertions, 0 deletions
diff --git a/src/runtime/haskell/PGF.hs b/src/runtime/haskell/PGF.hs index 6b6e3b1a3..895162e2e 100644 --- a/src/runtime/haskell/PGF.hs +++ b/src/runtime/haskell/PGF.hs @@ -79,6 +79,7 @@ module PGF( -- ** Generation generateRandom, generateAll, generateAllDepth, + generateRandomFrom, -- from initial expression, possibly weighed -- ** Morphological Analysis Lemma, Analysis, Morpho, diff --git a/src/runtime/haskell/PGF/Generate.hs b/src/runtime/haskell/PGF/Generate.hs index bda64b514..dee4f48fa 100644 --- a/src/runtime/haskell/PGF/Generate.hs +++ b/src/runtime/haskell/PGF/Generate.hs @@ -21,6 +21,10 @@ generateRandomFrom mex ps rg pgf ty = maybe (gen ty) (generateForMetas pgf gen) mex where gen ty = genRandomProb ps rg pgf ty + +-- generic algorithm for filling holes in a generator +---- for random, should be breadth-first, since now the first metas always get the same +---- value when a list is generated generateForMetas :: PGF -> (Type -> [Expr]) -> Expr -> [Expr] generateForMetas pgf gen exp = case exp of EApp f (EMeta _) -> [EApp g a | g <- gener f, a <- genArg g] |
