]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - tests/org.simantics.scl.compiler.tests/src/org/simantics/scl/compiler/tests/scl/Proc2.scl
Automatic execution of SCL tests in Maven
[simantics/platform.git] / tests / org.simantics.scl.compiler.tests / src / org / simantics / scl / compiler / tests / scl / Proc2.scl
diff --git a/tests/org.simantics.scl.compiler.tests/src/org/simantics/scl/compiler/tests/scl/Proc2.scl b/tests/org.simantics.scl.compiler.tests/src/org/simantics/scl/compiler/tests/scl/Proc2.scl
new file mode 100644 (file)
index 0000000..bd8021b
--- /dev/null
@@ -0,0 +1,29 @@
+import "Prelude"\r
+\r
+data RealWorld = RealWorld\r
+data IO a = IO (RealWorld -> (RealWorld, a))\r
+\r
+@inline\r
+unIO (IO m) = m \r
+\r
+instance Functor IO where\r
+    @inline\r
+    fmap f x = x >>= (return . f)\r
+\r
+instance Monad IO where\r
+    @inline\r
+    return x = IO (\s -> (s, x))\r
+    \r
+    @inline\r
+    (IO m) >>= f = IO (\s -> do\r
+        (newS, v) = m s\r
+        unIO (f v) newS \r
+    )\r
+\r
+@inline\r
+runIO :: IO a -> a\r
+runIO m = snd (unIO m RealWorld)\r
+\r
+main = runIO (return (13 :: Integer))\r
+--\r
+13\r