summaryrefslogtreecommitdiff
path: root/src/runtime
diff options
context:
space:
mode:
authoraarne <aarne@chalmers.se>2010-02-01 09:56:58 +0000
committeraarne <aarne@chalmers.se>2010-02-01 09:56:58 +0000
commit510d511637775a1e70809fd5b1e40bc623dd421b (patch)
tree7514eb96f7e06d20a4dd9e6afeaafd596fa1adf2 /src/runtime
parent563e65c30949d415dd6124c9b188256c328a461a (diff)
commands mq and tq can take a tree with metas to guide generation
Diffstat (limited to 'src/runtime')
-rw-r--r--src/runtime/haskell/PGF.hs1
-rw-r--r--src/runtime/haskell/PGF/Generate.hs4
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]