Update other binary to not use L.Grammar.Compile
[L-seed.git] / src / dbscorer.hs
1 import Lseed.Data
2 import Lseed.Data.Functions
3 import Lseed.DB
4 import Lseed.Grammar.Parse
5 import Lseed.Mainloop
6 import Control.Applicative
7 import Control.Monad
8 import Text.Printf
9
10 getGarden = spread <$> map compileDBCode
11                    <$> getCodeToRun
12   where spread gs = zipWith (\(u,g) p -> Planted ((fromIntegral p + 0.5) / l) u g inititalPlant) gs [0..]
13           where l = fromIntegral (length gs)
14
15 compileDBCode dbc =
16         case  parseGrammar "" (dbcCode dbc) of
17                 Left err          -> error (show err)
18                 Right grammarFile -> (dbcUserID dbc, grammarFile)
19
20 scoringObs = nullObserver {
21         obFinished = \garden -> do
22                 forM_ garden $ \planted -> do
23                         printf "Plant from %d at %.4f: Total size %.4f\n"
24                                 (plantOwner planted)
25                                 (plantPosition planted)
26                                 (plantLength (phenotype planted))
27                 addFinishedSeasonResults garden
28         }
29
30 main = do
31         garden <- getGarden
32         lseedMainLoop False scoringObs 10 garden