diff options
Diffstat (limited to 'src/GF/GFCC')
| -rw-r--r-- | src/GF/GFCC/API.hs | 8 | ||||
| -rw-r--r-- | src/GF/GFCC/Generate.hs | 6 |
2 files changed, 8 insertions, 6 deletions
diff --git a/src/GF/GFCC/API.hs b/src/GF/GFCC/API.hs index 0a3b37cc5..f02942a20 100644 --- a/src/GF/GFCC/API.hs +++ b/src/GF/GFCC/API.hs @@ -59,8 +59,9 @@ linearizeAllLang :: MultiGrammar -> Tree -> [(Language,String)] parseAll :: MultiGrammar -> Category -> String -> [[Tree]] parseAllLang :: MultiGrammar -> Category -> String -> [(Language,[Tree])] -generateAll :: MultiGrammar -> Category -> [Tree] -generateRandom :: MultiGrammar -> Category -> IO [Tree] +generateAll :: MultiGrammar -> Category -> [Tree] +generateRandom :: MultiGrammar -> Category -> IO [Tree] +generateAllDepth :: MultiGrammar -> Category -> Maybe Int -> [Tree] readTree :: MultiGrammar -> String -> Tree showTree :: Tree -> String @@ -105,7 +106,8 @@ generateRandom mgr cat = do gen <- newStdGen return $ genRandom gen (gfcc mgr) (CId cat) -generateAll mgr cat = generate (gfcc mgr) (CId cat) +generateAll mgr cat = generate (gfcc mgr) (CId cat) Nothing +generateAllDepth mgr cat = generate (gfcc mgr) (CId cat) readTree _ = pTree diff --git a/src/GF/GFCC/Generate.hs b/src/GF/GFCC/Generate.hs index 1924a8849..63bdb3b9a 100644 --- a/src/GF/GFCC/Generate.hs +++ b/src/GF/GFCC/Generate.hs @@ -8,8 +8,8 @@ import qualified Data.Map as M import System.Random -- generate an infinite list of trees exhaustively -generate :: GFCC -> CId -> [Exp] -generate gfcc cat = concatMap (\i -> gener i cat) [0..] +generate :: GFCC -> CId -> Maybe Int -> [Exp] +generate gfcc cat dp = concatMap (\i -> gener i cat) depths where gener 0 c = [tree (AC f) [] | (f, ([],_)) <- fns c] gener i c = [ @@ -21,7 +21,7 @@ generate gfcc cat = concatMap (\i -> gener i cat) [0..] depth tr >= i ] fns c = [(f,catSkeleton ty) | (f,ty) <- functionsToCat gfcc c] - + depths = maybe [0 ..] (\d -> [0..d]) dp -- generate an infinite list of trees randomly genRandom :: StdGen -> GFCC -> CId -> [Exp] |
