From 510d511637775a1e70809fd5b1e40bc623dd421b Mon Sep 17 00:00:00 2001 From: aarne Date: Mon, 1 Feb 2010 09:56:58 +0000 Subject: commands mq and tq can take a tree with metas to guide generation --- src/runtime/haskell/PGF.hs | 1 + src/runtime/haskell/PGF/Generate.hs | 4 ++++ 2 files changed, 5 insertions(+) (limited to 'src/runtime/haskell') 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] -- cgit v1.2.3