summaryrefslogtreecommitdiff
path: root/src/compiler/GF/Quiz.hs
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/compiler/GF/Quiz.hs
parent563e65c30949d415dd6124c9b188256c328a461a (diff)
commands mq and tq can take a tree with metas to guide generation
Diffstat (limited to 'src/compiler/GF/Quiz.hs')
-rw-r--r--src/compiler/GF/Quiz.hs16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/compiler/GF/Quiz.hs b/src/compiler/GF/Quiz.hs
index 6a1e5aae5..9a3540645 100644
--- a/src/compiler/GF/Quiz.hs
+++ b/src/compiler/GF/Quiz.hs
@@ -24,9 +24,9 @@ import GF.Data.Operations
import GF.Infra.UseIO
import GF.Infra.Option
import GF.Text.Coding
+import PGF.Probabilistic
import System.Random
-
import Data.List (nub)
-- translation and morphology quiz. AR 10/5/2000 -- 12/4/2002
@@ -39,18 +39,22 @@ mkQuiz cod msg tts = do
teachDialogue qas msg
translationList ::
+ Maybe Expr -> Maybe Probabilities ->
PGF -> Language -> Language -> Type -> Int -> IO [(String,[String])]
-translationList pgf ig og typ number = do
- ts <- generateRandom pgf typ >>= return . take number
+translationList mex mprobs pgf ig og typ number = do
+ gen <- newStdGen
+ let ts = take number $ generateRandomFrom mex mprobs gen pgf typ
return $ map mkOne $ ts
where
mkOne t = (norml (linearize pgf ig t), map (norml . linearize pgf og) (homonyms t))
homonyms = nub . parse pgf ig typ . linearize pgf ig
-morphologyList :: PGF -> Language -> Type -> Int -> IO [(String,[String])]
-morphologyList pgf ig typ number = do
- ts <- generateRandom pgf typ >>= return . take (max 1 number)
+morphologyList ::
+ Maybe Expr -> Maybe Probabilities ->
+ PGF -> Language -> Type -> Int -> IO [(String,[String])]
+morphologyList mex mprobs pgf ig typ number = do
gen <- newStdGen
+ let ts = take (max 1 number) $ generateRandomFrom mex mprobs gen pgf typ
let ss = map (tabularLinearizes pgf ig) ts
let size = length (head (head ss))
let forms = take number $ randomRs (0,size-1) gen