egison 3.2.17 → 3.2.18
raw patch · 4 files changed
+12/−7 lines, 4 files
Files
- egison.cabal +1/−1
- hs-src/Interpreter/egisoni.hs +8/−4
- hs-src/Language/Egison/Primitives.hs +2/−1
- lib/core/database.egi +1/−1
egison.cabal view
@@ -1,5 +1,5 @@ Name: egison-Version: 3.2.17+Version: 3.2.18 Synopsis: Programming language with non-linear pattern-matching against unfree data types Description: An interpreter for Egison, the programming langugage that realized non-linear pattern-matching against unfree data types.
hs-src/Interpreter/egisoni.hs view
@@ -36,25 +36,24 @@ case opts of Options {optShowHelp = True} -> printHelp Options {optShowVersion = True} -> printVersionNumber- Options {optPrompt = prompt, optShowBanner = bannerFlag} -> do+ Options {optPrompt = prompt, optShowBanner = bannerFlag, optNoIO = noIOFlag} -> do+ env <-if noIOFlag then initialEnvNoIO else initialEnv case nonOpts of [] -> do- env <- initialEnv when bannerFlag showBanner >> repl env prompt >> when bannerFlag showByebyeMessage (file:args) -> do case opts of Options {optLoadOnly = True} -> do- env <- initialEnvNoIO result <- evalEgisonTopExprs env [LoadFile file] either print (const $ return ()) result Options {optLoadOnly = False} -> do- env <- initialEnv result <- evalEgisonTopExprs env [LoadFile file, Execute (ApplyExpr (VarExpr "main") (CollectionExpr (Sq.fromList (map (ElementExpr . StringExpr) args))))] either print (const $ return ()) result data Options = Options { optShowVersion :: Bool, optShowHelp :: Bool,+ optNoIO :: Bool, optShowBanner :: Bool, optLoadOnly :: Bool, optPrompt :: String@@ -64,6 +63,7 @@ defaultOptions = Options { optShowVersion = False, optShowHelp = False,+ optNoIO = False, optShowBanner = True, optLoadOnly = False, optPrompt = "> "@@ -77,6 +77,9 @@ Option ['h', '?'] ["help"] (NoArg (\opts -> opts {optShowHelp = True})) "show usage information",+ Option [] ["no-io"]+ (NoArg (\opts -> opts {optNoIO = True}))+ "show usage information", Option [] ["no-banner"] (NoArg (\opts -> opts {optShowBanner = False})) "show usage information",@@ -96,6 +99,7 @@ putStrLn "Options:" putStrLn " --help Display this information" putStrLn " --version Display egison version information"+ putStrLn " --no-io No IO primitives" putStrLn " --no-banner Don't show banner" putStrLn " --load Don't execute main function" putStrLn " --prompt string Set prompt of the interpreter"
hs-src/Language/Egison/Primitives.hs view
@@ -445,6 +445,7 @@ , ("read-file", readFile') , ("rand", randRange)+ , ("sqlite", sqlite) ] makeIO :: EgisonM EgisonValue -> EgisonValue@@ -543,7 +544,7 @@ dbName <- fromEgison val qStr <- fromEgison val' ret <- liftIO $ query' (T.pack dbName) $ T.pack qStr- return $ Collection $ Sq.fromList $ map (\r -> Tuple (map toEgison r)) ret+ return $ makeIO $ return $ Collection $ Sq.fromList $ map (\r -> Tuple (map toEgison r)) ret where query' :: T.Text -> T.Text -> IO [[String]] query' dbName q = do
lib/core/database.egi view
@@ -37,4 +37,4 @@ ;; ;; for SQLite ;;-(define $pure-sqlite (lambda [$q] (io (sqlite q))))+(define $pure-sqlite (lambda [$db $q] (io (sqlite db q))))