aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCamil Staps2016-04-12 22:01:25 +0200
committerCamil Staps2016-04-12 22:01:25 +0200
commitb605f30516cc1fef04a706137dc9bc202aadc991 (patch)
tree7c1ea3670052489d455c9262c3a04267afc87503
Initial commit
-rw-r--r--.gitignore11
-rw-r--r--LICENSE21
-rw-r--r--Makefile17
-rw-r--r--README.md6
-rw-r--r--Smurf.dcl28
-rw-r--r--Smurf.icl118
-rw-r--r--SmurfParse.dcl8
-rw-r--r--SmurfParse.icl49
-rw-r--r--test.icl34
-rw-r--r--test.prj508
10 files changed, 800 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1fc2545
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,11 @@
+# Executables
+*.exe
+*.out
+test
+
+# Directory used to store object files, abc files and assembly files
+Clean System Files/
+
+# iTasks environment extra data
+*-data/
+sapl/
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..932c31a
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2016 Camil Staps
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..f017434
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,17 @@
+CPM=cpm
+TEST=test
+DEPS=Smurf.dcl Smurf.icl SmurfParse.dcl SmurfParse.icl
+
+all: $(TEST)
+
+$(TEST): %: %.icl $(DEPS)
+ $(CPM) project $@.prj build
+
+run_test: $(TEST)
+ ./$^
+
+clean:
+ rm -fvr $(TEST) Clean\ System\ Files
+
+.PHONY: all clean run_test
+
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..4c08583
--- /dev/null
+++ b/README.md
@@ -0,0 +1,6 @@
+# CleanSmurf
+Smurf interpreter in Clean
+
+## Copyright & license
+Copyright © 2016 Camil Staps. Licensed under MIT, see LICENSE.
+
diff --git a/Smurf.dcl b/Smurf.dcl
new file mode 100644
index 0000000..c4f1c45
--- /dev/null
+++ b/Smurf.dcl
@@ -0,0 +1,28 @@
+definition module Smurf
+
+from StdOverloaded import class zero, class toString
+
+from Data.Maybe import ::Maybe
+
+:: Stm = Push String
+ | Input | Output
+ | Cat | Head | Tail | Quotify
+ | Put | Get | Exec
+
+:: Program :== [Stm]
+
+:: Stack :== [String]
+:: Store :== [(String, String)]
+
+:: State = { stack :: Stack
+ , store :: Store
+ }
+
+instance toString Stm
+
+instance zero State
+instance toString State
+
+step :: !Program State !*File -> *(Maybe (!Program, State), *File)
+run :: !Program State *File -> *(Maybe State, *File)
+
diff --git a/Smurf.icl b/Smurf.icl
new file mode 100644
index 0000000..f00ef65
--- /dev/null
+++ b/Smurf.icl
@@ -0,0 +1,118 @@
+implementation module Smurf
+
+from StdFunc import o, flip
+import StdArray
+import StdList
+import StdString
+import StdTuple
+import StdFile
+
+from Data.Func import $
+import Control.Applicative
+import Control.Monad
+import Data.Maybe
+
+import SmurfParse
+
+instance zero [a] where zero = []
+
+instance toString Stm
+where
+ toString (Push s) = "\"" +++ s +++ "\""
+ toString Input = "i"
+ toString Output = "o"
+ toString Cat = "+"
+ toString Head = "h"
+ toString Tail = "t"
+ toString Quotify = "q"
+ toString Put = "p"
+ toString Get = "g"
+ toString Exec = "x"
+
+instance zero State where zero = { stack = zero, store = zero }
+
+instance toString State
+where
+ toString {stack, store}
+ = "Stack:\n"
+ +++ foldl (+++) "" [" " +++ val +++ "\n" \\ val <- stack]
+ +++ "Store:\n"
+ +++ foldl (+++) "" [" " +++ var +++ " : " +++ val +++ "\n"
+ \\ (var, val) <- store]
+
+run :: !Program State *File -> *(Maybe State, *File)
+run prog st io
+ # (mbProgSt, io) = step prog st io
+ | isNothing mbProgSt = (Nothing, io)
+ # (prog, st) = fromJust mbProgSt
+ = if (isEmpty prog) (Just st, io) (run prog st io)
+
+step :: !Program State !*File -> *(Maybe (!Program, State), *File)
+step [] st io
+ = (pure ([], st), io)
+step [Push s:p] st io
+ = (pure (p, { st & stack = push s st.stack }), io)
+step [Input:p] st io
+ # (ip, io) = freadline io
+ # ip = ip % (0, size ip - 2)
+ = (pure (p, { st & stack = push ip st.stack }), io)
+step [Output:p] st io
+ # mbSStk = pop st.stack
+ | isNothing mbSStk = (empty, io)
+ # (s, stk) = fromJust mbSStk
+ = (pure (p, { st & stack = stk }), io <<< s)
+step [Cat:p] st io
+ = (pop st.stack >>= \(x,stk) -> pop stk >>= \(y,stk`) ->
+ pure (p, { st & stack = push (y +++ x) stk` }), io)
+step [Head:p] st io
+ = (pop st.stack >>= \(x,stk) -> head x >>= \x` ->
+ pure (p, { st & stack = push x` stk }), io)
+step [Tail:p] st io
+ = (pop st.stack >>= \(x,stk) -> tail x >>= \x` ->
+ pure (p, { st & stack = push x` stk }), io)
+step [Quotify:p] st io
+ = (pop st.stack >>= \(x,stk) ->
+ pure (p, { st & stack = push (quotify x) stk }), io)
+step [Put:p] st io
+ = (pop st.stack >>= \(var,stk) -> pop stk >>= \(val,stk`) ->
+ pure (p, { st & stack = stk`, store = put var val st.store }), io)
+step [Get:p] st io
+ = (pop st.stack >>= \(var,stk) ->
+ pure (p, { st & stack = push (get var st.store) stk }), io)
+step [Exec:p] st io
+ = (pop st.stack >>= parse o fromString o fst >>= \p ->
+ pure (p, zero), io)
+
+push :: String Stack -> Stack
+push s st = [s:st]
+
+pop :: Stack -> Maybe (String, Stack)
+pop [] = empty
+pop [s:ss] = pure (s, ss)
+
+head :: String -> Maybe String
+head "" = empty
+head s = pure $ s % (0,0)
+
+tail :: String -> Maybe String
+tail "" = empty
+tail s = pure $ s % (1, size s - 1)
+
+put :: String String Store -> Store
+put var val store = [(var,val) : filter ((<>)var o fst) store]
+
+get :: String Store -> String
+get var store = case filter ((==)var o fst) store of [] = ""; [(_,val):_] = val
+
+quotify :: (String -> String)
+quotify = (flip (+++) "\"") o ((+++)"\"") o toString o quot o fromString
+where
+ quot :: [Char] -> [Char]
+ quot [] = []
+ quot ['\\':cs] = ['\\':'\\':quot cs]
+ quot ['\n':cs] = ['\\':'n':quot cs]
+ quot ['\r':cs] = ['\\':'r':quot cs]
+ quot ['\t':cs] = ['\\':'t':quot cs]
+ quot ['"':cs] = ['\\':'"':quot cs]
+ quot [c:cs] = [c:quot cs]
+
diff --git a/SmurfParse.dcl b/SmurfParse.dcl
new file mode 100644
index 0000000..fb06ab3
--- /dev/null
+++ b/SmurfParse.dcl
@@ -0,0 +1,8 @@
+definition module SmurfParse
+
+from Data.Maybe import ::Maybe
+
+from Smurf import ::Program, ::Stm
+
+parse :: ![Char] -> Maybe Program
+
diff --git a/SmurfParse.icl b/SmurfParse.icl
new file mode 100644
index 0000000..71bfc34
--- /dev/null
+++ b/SmurfParse.icl
@@ -0,0 +1,49 @@
+implementation module SmurfParse
+
+from StdFunc import o, flip
+import StdChar
+import StdList
+import StdFile
+import StdTuple
+import StdString
+
+from Data.Func import $
+import Data.Maybe
+import Control.Applicative
+import Control.Monad
+
+import Smurf
+
+parse :: ![Char] -> Maybe Program
+parse [] = pure []
+parse ['"':cs] = parseString cs >>= \(s,cs`) -> append (Push s) $ parse cs`
+parse ['i':cs] = apparse Input cs
+parse ['o':cs] = apparse Output cs
+parse ['+':cs] = apparse Cat cs
+parse ['h':cs] = apparse Head cs
+parse ['t':cs] = apparse Tail cs
+parse ['q':cs] = apparse Quotify cs
+parse ['p':cs] = apparse Put cs
+parse ['g':cs] = apparse Get cs
+parse ['x':cs] = apparse Exec cs
+parse [c:cs] = if (isSpace c) (parse cs) empty
+
+apparse :: Stm -> [Char] -> Maybe Program
+apparse stm = append stm o parse
+
+append :: a (m [a]) -> m [a] | Monad m
+append x mx = mx >>= \xs -> pure [x:xs]
+
+parseString :: ![Char] -> Maybe (String, [Char])
+parseString cs = pS [] cs
+where
+ pS :: ![Char] ![Char] -> Maybe (String, [Char])
+ pS _ [] = empty
+ pS s ['"':cs] = pure (toString $ reverse s, cs)
+ pS s ['\\':'n':cs] = pS ['\n':s] cs
+ pS s ['\\':'r':cs] = pS ['\r':s] cs
+ pS s ['\\':'t':cs] = pS ['\t':s] cs
+ pS s ['\\':'\\':cs] = pS ['\\':s] cs
+ pS s ['\\':'"':cs] = pS ['"':s] cs
+ pS s [c:cs] = pS [c:s] cs
+
diff --git a/test.icl b/test.icl
new file mode 100644
index 0000000..77e836c
--- /dev/null
+++ b/test.icl
@@ -0,0 +1,34 @@
+module test
+
+import StdEnv
+import Data.Maybe
+from Data.Func import $
+
+import Smurf
+import SmurfParse
+
+Start :: *World -> *World
+Start w
+# (io, w) = stdio w
+//# io = loop (prog reverse) zero io
+# (mbSt, io) = run (prog reverse) zero io
+# result = if (isNothing mbSt) "uh-oh." (toString $ fromJust mbSt)
+# io = io <<< "\n--------------------\n" <<< result <<< "\n"
+= snd $ fclose io w
+where
+ loop :: !Program State !*File -> *File
+ loop p st f
+ # (mbProgSt, f) = step p st f
+ | isNothing mbProgSt = f <<< "NOTHING!!!\n"
+ # (prog, st) = fromJust mbProgSt
+ | isEmpty prog = f <<< "\n---------------------------\n" <<< toString st
+ # f = f <<< "---> " <<< toString (hd prog) <<< " ? "
+ # (cmd, f) = freadline f
+ | cmd == "state\n" = loop prog st (f <<< toString st)
+ = loop prog st f
+
+ prog txt = fromJust $ parse txt
+
+ // From http://esolangs.org/wiki/Smurf
+ reverse = ['"+"i+""p""gtg""gt"i"p"\\"\\"p\\"i\\"gh\\"o\\"g+\\"o\\"p\\"i\\"gt\\"i\\"p\\"\\\\\\"+\\\\\\"\\\\\\"\\\\\\"p\\"\\"i\\"gq+\\"tg\\"+\\"i\\"gq+\\"\\\\\\"i\\\\\\"p\\"+\\"o\\"gq+\\"\\\\\\"o\\\\\\"p\\"+\\"\\"gq+\\"\\"g+\\"\\"p\\"o\\"gq\\"o\\"+\\"+\\"pgx"""p"\\"+\\"\\"\\"p""i"gq+"tg"+"i"gq+"\\"i\\"p\\"\\""+""gq+""g+""p"""+""i"g+pgx']
+
diff --git a/test.prj b/test.prj
new file mode 100644
index 0000000..00ff6fb
--- /dev/null
+++ b/test.prj
@@ -0,0 +1,508 @@
+Version: 1.4
+Global
+ ProjectRoot: .
+ Target: StdEnv
+ Exec: {Project}/test
+ CodeGen
+ CheckStacks: False
+ CheckIndexes: True
+ Application
+ HeapSize: 2097152
+ StackSize: 512000
+ ExtraMemory: 8192
+ IntialHeapSize: 204800
+ HeapSizeMultiplier: 4096
+ ShowExecutionTime: False
+ ShowGC: False
+ ShowStackSize: False
+ MarkingCollector: False
+ DisableRTSFlags: False
+ StandardRuntimeEnv: True
+ Profile
+ Memory: False
+ MemoryMinimumHeapSize: 0
+ Time: False
+ Stack: False
+ Output
+ Output: NoConsole
+ Font: Monaco
+ FontSize: 9
+ WriteStdErr: False
+ Link
+ LinkMethod: Static
+ GenerateRelocations: False
+ GenerateSymbolTable: False
+ GenerateLinkMap: False
+ LinkResources: False
+ ResourceSource:
+ GenerateDLL: False
+ ExportedNames:
+ Paths
+ Path: {Project}/
+ Path: {Application}/lib/Generics/
+ Path: {Application}/lib/clean-platform/OS-Independent/
+ Precompile:
+ Postlink:
+MainModule
+ Name: test
+ Dir: {Project}
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+OtherModules
+ Module
+ Name: Smurf
+ Dir: {Project}/
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: SmurfParse
+ Dir: {Project}/
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: GenEq
+ Dir: {Application}/lib/Generics/
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: Control.Applicative
+ Dir: {Application}/lib/clean-platform/OS-Independent/
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: Control.Monad
+ Dir: {Application}/lib/clean-platform/OS-Independent/
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: Data.Func
+ Dir: {Application}/lib/clean-platform/OS-Independent/
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: Data.Functor
+ Dir: {Application}/lib/clean-platform/OS-Independent/
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: Data.List
+ Dir: {Application}/lib/clean-platform/OS-Independent/
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: Data.Maybe
+ Dir: {Application}/lib/clean-platform/OS-Independent/
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: Data.Monoid
+ Dir: {Application}/lib/clean-platform/OS-Independent/
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: Data.Void
+ Dir: {Application}/lib/clean-platform/OS-Independent/
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: System.IO
+ Dir: {Application}/lib/clean-platform/OS-Independent/
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: StdArray
+ Dir: {Application}/lib/StdEnv
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: StdBool
+ Dir: {Application}/lib/StdEnv
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: StdChar
+ Dir: {Application}/lib/StdEnv
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: StdCharList
+ Dir: {Application}/lib/StdEnv
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: StdClass
+ Dir: {Application}/lib/StdEnv
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: StdEnum
+ Dir: {Application}/lib/StdEnv
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: StdEnv
+ Dir: {Application}/lib/StdEnv
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: StdFile
+ Dir: {Application}/lib/StdEnv
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: StdFunc
+ Dir: {Application}/lib/StdEnv
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: StdGeneric
+ Dir: {Application}/lib/StdEnv
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: StdInt
+ Dir: {Application}/lib/StdEnv
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: StdList
+ Dir: {Application}/lib/StdEnv
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: StdMisc
+ Dir: {Application}/lib/StdEnv
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: StdOrdList
+ Dir: {Application}/lib/StdEnv
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: StdOverloaded
+ Dir: {Application}/lib/StdEnv
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: StdReal
+ Dir: {Application}/lib/StdEnv
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: StdString
+ Dir: {Application}/lib/StdEnv
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: StdTuple
+ Dir: {Application}/lib/StdEnv
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: _SystemArray
+ Dir: {Application}/lib/StdEnv
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False
+ Module
+ Name: _SystemEnum
+ Dir: {Application}/lib/StdEnv
+ Compiler
+ NeverMemoryProfile: False
+ NeverTimeProfile: False
+ StrictnessAnalysis: True
+ ListTypes: StrictExportTypes
+ ListAttributes: True
+ Warnings: True
+ Verbose: True
+ ReadableABC: False
+ ReuseUniqueNodes: True
+ Fusion: False