Console example
commit0ddd210119c3e9fe0c1b2ef32b8ae0f3fa5f4ab9
authorPhil Freeman <paf31@cantab.net>
dateTue 22 Oct 2013, 14:54 (13 years ago)
parentd66e332
examples/Console.jsnew file+19
@@ -0,0 +1,19 @@
1+// data IO a = \ -> a
2+
3+// ret :: forall a. a -> IO a
4+var ret = function(a) {
5+ return function() { return a; };
6+}
7+
8+// (>>=) :: forall a b. IO a -> (a -> IO b) -> IO b
9+var $62$62$61 = function(first) {
10+ return function (f) {
11+ return function () {
12+ var a = first();
13+ return f(a)();
14+ };
15+ };
16+};
17+
18+// putStrLn :: String -> IO {}
19+var putStrLn = function(str) { return function() { console.log(str); return {}; }; };
examples/Console.psnew file+19
@@ -0,0 +1,19 @@
1+data IO a = IO
2+
3+extern ret :: forall a. a -> IO a
4+
5+extern (>>=) :: forall a b. IO a -> (a -> IO b) -> IO b
6+
7+(*>) = \a -> \b -> a >>= \x -> b
8+
9+extern putStrLn :: String -> IO {}
10+
11+replicateM_ :: forall a. Number -> IO a -> IO {}
12+replicateM_ = \n -> \x -> do
13+ var io = ret({})
14+ for i <- 0 until n:
15+ io = x *> io
16+ return io
17+
18+main = replicateM_(10)(putStrLn("Hello World!"))
19+
examples/runMain.jsnew file+1