packages feed

egison 3.2.17 → 3.2.18

raw patch · 4 files changed

+12/−7 lines, 4 files

Files

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))))