--- /dev/null
+ITASKSPRJS:=skeleton6a #skeleton6b.exe
+CPM:=cpm
+
+all: $(ITASKSPRJS)
+
+%: %.prj %.icl
+ $(CPM) project $< build
+
+clean:
+ $(RM) -r \
+ $(basename $(ITASKSPRJS)) \
+ Clean\ System\ Files \
+ sapl \
+ $(addsuffix -data,$(basename $(ITASKSPRJS)))
--- /dev/null
+module skeleton6a
+
+import StdTuple, StdList, StdInt, StdChar, StdMisc, StdClass, StdString, StdFile, StdArray, Data.Maybe, Data.Map, Control.Monad, Data.Tuple, Data.Void
+import qualified Text
+from Text import class Text, instance Text String
+
+class print a :: a -> String
+
+instance print Void where print _ = "Void"
+instance print String where print s = s
+instance print Int where print i = toString i
+instance print [a] | print a where print l = 'Text'.join ", " (map print l)
+
+class parse a :: String -> Maybe a
+
+instance parse Void where parse _ = Just Void
+
+instance parse String where
+ parse s = let len = size s
+ in Just (if (select s (len-1) == '\n') (s % (0, len - 2)) s) // remove newline
+instance parse Int where
+ parse s
+ # len = size s
+ | len > 0
+ # s = if (select s (len-1) == '\n') (s % (0, len - 2)) s // remove newline
+ # i = toInt s
+ | toString i == s
+ = Just i
+ = Nothing
+
+instance parse [a] | parse a where parse s = foldr (\xs list -> maybe Nothing (\e -> fmap (\l -> [e:l]) list) (parse xs)) (Just []) ('Text'.split "," s)
+
+class iTasksLite a | print a & parse a & TC a
+
+:: Description :== String
+:: StoreID a :== String
+:: *TaskResult a :== (a, TaskState)
+:: *TaskState = { console :: *File
+ , store :: Map String Dynamic
+ }
+
+store_ :: a (StoreID a) (Map String Dynamic) -> Map String Dynamic | TC a
+store_ v sid store = put sid (dynamic v) store
+
+retrieve_ :: (StoreID a) (Map String Dynamic) -> a | TC a
+retrieve_ sid store = case get sid store of
+ Just (a :: a^) = a
+ Just _ = abort "type error\n"
+ Nothing = abort "empty store\n"
+
+viewInformation :: Description a TaskState -> TaskResult a | iTasksLite a
+viewInformation d a ts=:{console} =
+ (a, {ts & console=console <<< d <<< ": " <<< print a <<< ".\n"})
+
+enterInformation :: Description TaskState -> TaskResult a | iTasksLite a
+enterInformation d ts=:{console}
+# (a, console) = freadline (console <<< "Enter the answer: ")
+= case parse a of
+ Just x = (x, {ts & console=console})
+ Nothing = enterInformation d {ts & console=console <<< "Wrong format, try again.\n"}
+
+store :: a (StoreID a) TaskState -> TaskResult a | iTasksLite a
+store v s ts=:{store} = (v, {ts & store=store_ v s store})
+
+retrieve :: (StoreID a) TaskState -> TaskResult a | iTasksLite a
+retrieve s ts=:{store} = (retrieve_ s store, ts)
+
+eval :: (TaskState -> TaskResult a) *File -> (a, *File) | iTasksLite a
+eval taskFunc console
+ # (r, st) = taskFunc ({store = newMap, console = console})
+ = (r, st.console)
+
+task0 :: TaskState -> TaskResult Int
+task0 st = (42, st)
+
+// The type is surrounded by parenthesis because its a constant that happens to
+// be a function
+task1 :: (TaskState -> TaskResult Int)
+task1 = viewInformation "The answer is" 42
+
+task2 :: TaskState -> TaskResult Int
+task2 st
+# (x, st) = enterInformation "Enter the answer" st
+= viewInformation "The answer is" x st
+
+task3 :: TaskState -> TaskResult Int
+task3 st
+ # (_, st) = store 1 intStore st
+ = retrieve intStore st
+where
+ intStore :: StoreID Int
+ intStore = "intStore"
+
+task3Fail :: TaskState -> TaskResult Int
+task3Fail st = retrieve intStore st
+ where
+ intStore :: StoreID Int
+ intStore = "intStore"
+
+task3TypeFail :: TaskState -> TaskResult Int
+task3TypeFail st = retrieve intStore (snd (store "1" stringStore st))
+ where
+ intStore :: StoreID Int
+ intStore = "intStore"
+ stringStore :: StoreID String
+ stringStore = "intStore"
+
+// This gives a heap full error, because the console is never queried it just
+// continues. The strictness enforced the immediate query of the console.
+task4 :: TaskState -> TaskResult Void
+task4 st
+ # (_, st) = store [] ideaStore st
+ = addIdea st
+where
+ addIdea st
+ # (ideas, st) = retrieve ideaStore st
+ (_, st) = viewInformation "All ideas" ideas st
+ (idea, st) = enterInformation "Enter new idea" st
+ (_, st) = store (ideas ++ [toString (length ideas+1) +++ ". " +++ idea]) ideaStore st
+ = addIdea st
+
+ ideaStore :: StoreID [String]
+ ideaStore = "ideas"
+
+Start world
+ # (console, world) = stdio world
+ console = console <<< "Welcome to iTasksLite\n\n"
+ (r, console) = eval task4 console
+ console = console <<< "\nThe result of the task is " <<< print r <<< ".\n"
+ (_, world) = fclose console world
+ = world
--- /dev/null
+Version: 1.4
+Global
+ ProjectRoot: .
+ Target: StdEnv
+ Exec: {Project}/skeleton6a
+ 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: NoReturnType
+ Font: Monaco
+ FontSize: 9
+ WriteStdErr: False
+ Link
+ LinkMethod: Dynamic
+ GenerateRelocations: False
+ GenerateLinkMap: False
+ LinkResources: False
+ ResourceSource:
+ GenerateDLL: False
+ ExportedNames:
+ Paths
+ Path: {Project}
+ Path: {Application}/lib/clean-platform/OS-Independent/
+ Path: {Application}/lib/Generics
+ Path: {Application}/lib/Dynamics
+ Precompile:
+ Postlink:
+MainModule
+ Name: skeleton6a
+ 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: 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.Either
+ 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.Foldable
+ 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.Map
+ 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.Set
+ 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.Traversable
+ 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.Tuple
+ 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: Text
+ 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: Text.JSON
+ 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: Text.PPrint
+ 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: 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: _SystemDynamic
+ Dir: {Application}/lib/Dynamics
+ 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: StdOverloadedList
+ 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: StdStrictLists
+ 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
+ Module
+ Name: _SystemEnumStrict
+ 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: _SystemStrictLists
+ 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
--- /dev/null
+module skeleton6b
+
+import StdList, StdInt, StdChar, StdMisc, StdClass, StdString, StdFile, StdArray, Data.Maybe, Data.Map, Control.Monad, Data.Tuple, Data.Void
+import qualified Text
+from Text import class Text, instance Text String
+
+class print a :: a -> String
+
+instance print Void where print _ = "Void"
+instance print String where print s = s
+instance print Int where print i = toString i
+instance print [a] | print a where print l = 'Text'.join ", " (map print l)
+
+class parse a :: String -> Maybe a
+
+instance parse Void where parse _ = Just Void
+
+instance parse String where
+ parse s = let len = size s
+ in Just (if (select s (len-1) == '\n') (s % (0, len - 2)) s) // remove newline
+instance parse Int where
+ parse s
+ # len = size s
+ | len > 0
+ # s = if (select s (len-1) == '\n') (s % (0, len - 2)) s // remove newline
+ # i = toInt s
+ | toString i == s
+ = Just i
+ = Nothing
+
+instance parse [a] | parse a where parse s = foldr (\xs list -> maybe Nothing (\e -> fmap (\l -> [e:l]) list) (parse xs)) (Just []) ('Text'.split "," s)
+
+class iTasksLite a | print a & parse a & TC a
+
+:: Description :== String
+:: StoreID a :== String
+:: Task a = // define type here
+:: *TaskState = { console :: !*File
+ , store :: Map String Dynamic
+ }
+
+store_ :: a (StoreID a) (Map String Dynamic) -> Map String Dynamic | TC a
+store_ v sid store = put sid (dynamic v) store
+
+retrieve_ :: (StoreID a) (Map String Dynamic) -> a | TC a
+retrieve_ sid store = case get sid store of
+ Just (a :: a^) = a
+ Just _ = abort "type error\n"
+ Nothing = abort "empty store\n"
+
+instance Functor Task where
+ fmap :: (a -> b) (Task a) -> Task b
+ fmap _ _ = undef
+
+instance Applicative Task where
+ pure :: a -> Task a
+ pure _ = undef
+
+ (<*>) infixl 4 :: (Task (a -> b)) (Task a) -> Task b
+ (<*>) _ _ = undef
+
+instance Monad Task where
+ bind :: (Task a) (a -> Task b) -> Task b
+ bind _ _ = undef
+
+eval :: (Task a) *File -> (a, *File) | iTasksLite a
+eval (Task taskFunc) console
+ # (r, {console}) = taskFunc {store = newMap, console = console}
+ = (r, console)
+
+task0 :: Task Int
+task0 = return 42
+
+/*task1 :: Task Int
+task1 = viewInformation "The answer is" 42
+
+task2 :: Task Int
+task2 =
+ enterInformation "Enter the answer"
+ >>= viewInformation "The answer is"
+
+task3 :: Task Int
+task3 =
+ store 1 intStore
+ >>| retrieve intStore
+where
+ intStore :: StoreID Int
+ intStore = "intStore"
+
+task3Fail :: Task Int
+task3Fail = retrieve intStore
+where
+ intStore :: StoreID Int
+ intStore = "intStore"
+
+task4 :: Task Void
+task4 =
+ store [] ideaStore
+ >>| addIdea
+where
+ addIdea =
+ retrieve ideaStore
+ >>= \ideas -> viewInformation "All ideas" ideas
+ >>| enterInformation "Enter new idea"
+ >>= \idea -> store (ideas ++ [toString (length ideas+1) +++ ". " +++ idea]) ideaStore
+ >>| addIdea
+
+ ideaStore :: StoreID [String]
+ ideaStore = "ideas"*/
+
+Start world
+ # (console, world) = stdio world
+ console = console <<< "Welcome to iTasksLite" <<< "\n\n"
+ (r, console) = eval task0 console
+ console = console <<< "\n" <<< "The result of the task is " <<< print r <<< ".\n"
+ (_, world) = fclose console world
+ = world
+
--- /dev/null
+Version: 1.4
+Global
+ ProjectRoot: .
+ Target: StdEnv
+ Exec: {Project}/skeleton6b
+ 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: NoReturnType
+ Font: Monaco
+ FontSize: 9
+ WriteStdErr: False
+ Link
+ LinkMethod: Dynamic
+ GenerateRelocations: False
+ GenerateLinkMap: False
+ LinkResources: False
+ ResourceSource:
+ GenerateDLL: False
+ ExportedNames:
+ Paths
+ Path: {Project}
+ Path: {Application}/lib/clean-platform/OS-Independent/
+ Path: {Application}/lib/Generics
+ Path: {Application}/lib/Dynamics
+ Precompile:
+ Postlink:
+MainModule
+ Name: skeleton6b
+ 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: 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.Either
+ 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.Foldable
+ 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.Map
+ 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.Set
+ 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.Traversable
+ 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.Tuple
+ 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: Text
+ 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: Text.JSON
+ 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: Text.PPrint
+ 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: 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: _SystemDynamic
+ Dir: {Application}/lib/Dynamics
+ 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: StdOverloadedList
+ 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: StdStrictLists
+ 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
+ Module
+ Name: _SystemEnumStrict
+ 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: _SystemStrictLists
+ 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