--- /dev/null
+module skeleton12
+
+import Data.Maybe
+import Control.Monad
+import StdInt, StdString, StdBool
+
+class arith x where
+ lit :: a -> x a | toString a
+ (+.) infixl 6 :: (x a) (x a) -> x a | + a // integer addition, Boolean OR
+ (*.) infixl 7 :: (x a) (x a) -> x a | * a // integer multiplication, Boolean AND
+class store x where
+ read :: (x Int)
+ write :: (x Int) -> x Int
+class truth x where
+ (XOR) infixr 3 :: (x Bool) (x Bool) -> x Bool
+ -. :: (x Bool) -> x Bool
+class (=.=) infix 4 x :: (x a) (x a) -> x Bool | == a
+class except x where
+ throw :: (x a)
+ try :: (x a) (x a) -> x a
+
+class aexpr x | arith, store, except, =.= x
+class bexpr x | arith, truth, except, =.= x
+class expr x | aexpr, bexpr x
+
+:: Step a = Step (State -> (Maybe a, State))
+:: State :== Int
+
+instance Functor Step where
+ fmap f (Step g) = Step \st . h (g st) where
+ h (Just x, st) = (Just (f x), st)
+ h (Nothing, st) = (Nothing, st)
+
+instance Applicative Step where
+ pure x = Step \st . (Just x, st)
+ (<*>) (Step f) (Step g) = Step \st . h (f st) where
+ h (Just f, st) = q f (g st)
+ h (Nothing, st) = (Nothing, st)
+ q f (Just x, st) = (Just (f x), st)
+ q _ (Nothing, st) = (Nothing, st)
+
+instance Monad Step where
+ bind (Step f) g = Step \st . h (f st) where
+ h (Just x, st) = q (g x) st
+ h (Nothing, st) = (Nothing, st)
+ q (Step f) st = f st
+
+instance arith Step where
+ lit x = return x
+ (+.) x y = x >>= \x` . y >>= \y` . return (x`+y`)
+ (*.) x y = x >>= \x` . y >>= \y` . return (x`*y`)
+
+instance store Step where
+ read = Step \st . (Just st, st)
+ write x = x >>= \x` . Step \st . (Just x`, x`)
+
+instance truth Step where
+ (XOR) x y = x >>= \x` . y >>= \y` . return (x` bitxor y`)
+ -. x = x >>= \x` . return (not x`)
+
+seven :: e Int | aexpr e
+seven = lit 3 +. lit 4
+
+throw1 :: e Int | expr e
+throw1 = lit 3 +. throw
+
+six :: e Int | expr e
+six = write (lit 3) +. read
+
+try1 :: e Int | expr e
+try1 = try throw1 (lit 42)
+
+/*loge :: e Bool | expr e
+loge = lit True *. -. (lit True)*/
+
+comp :: e Bool | expr e
+comp = lit 1 =.= lit 2 XOR -. (-. (lit True))
+
+:: Show a = Show ([String] -> [String])
+
+instance arith Show where
+ lit x = Show \xs . [toString x:xs]
+ (+.) (Show f) (Show g) = Show \xs . f ["+":g xs]
+ (*.) (Show f) (Show g) = Show \xs . f ["*":g xs]
+
+instance store Show where
+ read = Show \xs . ["read":xs]
+ write (Show f) = Show \xs . ["write":f xs]
+
+instance truth Show where
+ (XOR) (Show f) (Show g) = Show \xs . f ["XOR":g xs]
+ -. (Show f) = Show \xs . ["!":f xs]
+
+instance =.= Show where
+ (=.=)(Show f) (Show g) = Show \xs . f ["==":g xs]
+
+instance except Show where
+ throw = Show \xs . ["throw":xs]
+ try (Show f) (Show g) = Show \xs . ["try":f ["catch":g xs]]
+
+show :: (Show a) -> [String]
+show (Show f) = f []
+
+Start :: Step Bool
+Start = comp >>= return
--- /dev/null
+Version: 1.4\r
+Global\r
+ ProjectRoot: .\r
+ Target: iTasks\r
+ Exec: {Project}\skeleton12.exe\r
+ CodeGen\r
+ CheckStacks: False\r
+ CheckIndexes: True\r
+ Application\r
+ HeapSize: 2097152\r
+ StackSize: 512000\r
+ ExtraMemory: 81920\r
+ IntialHeapSize: 204800\r
+ HeapSizeMultiplier: 4096\r
+ ShowExecutionTime: False\r
+ ShowGC: False\r
+ ShowStackSize: False\r
+ MarkingCollector: False\r
+ StandardRuntimeEnv: True\r
+ Profile\r
+ Memory: False\r
+ MemoryMinimumHeapSize: 0\r
+ Time: False\r
+ Stack: False\r
+ Output\r
+ Output: ShowConstructors\r
+ Font: Courier\r
+ FontSize: 9\r
+ WriteStdErr: False\r
+ Link\r
+ LinkMethod: Static\r
+ GenerateRelocations: False\r
+ GenerateLinkMap: False\r
+ LinkResources: False\r
+ ResourceSource: \r
+ GenerateDLL: False\r
+ ExportedNames: \r
+ Paths\r
+ Path: {Project}\r
+ Precompile: \r
+ Postlink: \r
+MainModule\r
+ Name: skeleton12\r
+ Dir: {Project}\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+OtherModules\r
+ Module\r
+ Name: StdArray\r
+ Dir: {Application}\Libraries\StdEnv\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: StdBool\r
+ Dir: {Application}\Libraries\StdEnv\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: StdChar\r
+ Dir: {Application}\Libraries\StdEnv\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: StdCharList\r
+ Dir: {Application}\Libraries\StdEnv\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: StdClass\r
+ Dir: {Application}\Libraries\StdEnv\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: StdEnum\r
+ Dir: {Application}\Libraries\StdEnv\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: StdEnv\r
+ Dir: {Application}\Libraries\StdEnv\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: StdFile\r
+ Dir: {Application}\Libraries\StdEnv\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: StdFunc\r
+ Dir: {Application}\Libraries\StdEnv\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: StdInt\r
+ Dir: {Application}\Libraries\StdEnv\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: StdList\r
+ Dir: {Application}\Libraries\StdEnv\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: StdMisc\r
+ Dir: {Application}\Libraries\StdEnv\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: StdOrdList\r
+ Dir: {Application}\Libraries\StdEnv\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: StdOverloaded\r
+ Dir: {Application}\Libraries\StdEnv\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: StdReal\r
+ Dir: {Application}\Libraries\StdEnv\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: StdString\r
+ Dir: {Application}\Libraries\StdEnv\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: StdTuple\r
+ Dir: {Application}\Libraries\StdEnv\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: _SystemArray\r
+ Dir: {Application}\Libraries\StdEnv\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: _SystemEnum\r
+ Dir: {Application}\Libraries\StdEnv\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: Control.Applicative\r
+ Dir: {Application}\iTasks-SDK\Dependencies\clean-platform\src\libraries\OS-Independent\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: Control.Monad\r
+ Dir: {Application}\iTasks-SDK\Dependencies\clean-platform\src\libraries\OS-Independent\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: Data.Func\r
+ Dir: {Application}\iTasks-SDK\Dependencies\clean-platform\src\libraries\OS-Independent\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: Data.Functor\r
+ Dir: {Application}\iTasks-SDK\Dependencies\clean-platform\src\libraries\OS-Independent\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: Data.List\r
+ Dir: {Application}\iTasks-SDK\Dependencies\clean-platform\src\libraries\OS-Independent\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: Data.Maybe\r
+ Dir: {Application}\iTasks-SDK\Dependencies\clean-platform\src\libraries\OS-Independent\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: Data.Monoid\r
+ Dir: {Application}\iTasks-SDK\Dependencies\clean-platform\src\libraries\OS-Independent\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: Data.Void\r
+ Dir: {Application}\iTasks-SDK\Dependencies\clean-platform\src\libraries\OS-Independent\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: System.IO\r
+ Dir: {Application}\iTasks-SDK\Dependencies\clean-platform\src\libraries\OS-Independent\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: _SystemDynamic\r
+ Dir: {Application}\iTasks-SDK\Patches\Dynamics\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: GenEq\r
+ Dir: {Application}\iTasks-SDK\Patches\Generics\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r
+ Module\r
+ Name: StdGeneric\r
+ Dir: {Application}\iTasks-SDK\Patches\StdEnv\r
+ Compiler\r
+ NeverMemoryProfile: False\r
+ NeverTimeProfile: False\r
+ StrictnessAnalysis: True\r
+ ListTypes: StrictExportTypes\r
+ ListAttributes: True\r
+ Warnings: True\r
+ Verbose: True\r
+ ReadableABC: False\r
+ ReuseUniqueNodes: True\r
+ Fusion: False\r