Skip to content

Commit 55387af

Browse files
authored
upgrade playground (#696)
1 parent 89270a7 commit 55387af

29 files changed

+26329
-26266
lines changed

docs/Manual.html

Lines changed: 1 addition & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -2930,8 +2930,7 @@ <h2 id="_js_module"><a class="anchor" href="#_js_module"></a>Js module</h2>
29302930
<pre class="pygments highlight"><code data-lang="ocaml"><span class="tok-c">(** {3 nested modules}*)</span>
29312931
<span class="tok-k">module</span> <span class="tok-nc">Null</span> <span class="tok-o">=</span> <span class="tok-nc">Js_null</span>
29322932
<span class="tok-k">module</span> <span class="tok-nc">Undefined</span> <span class="tok-o">=</span> <span class="tok-nc">Js_undefined</span>
2933-
<span class="tok-k">module</span> <span class="tok-nc">Null_undefined</span> <span class="tok-o">=</span> <span class="tok-nc">Js_null_undefined</span>
2934-
<span class="tok-k">module</span> <span class="tok-nc">Types</span> <span class="tok-o">=</span> <span class="tok-nc">Js_types</span></code></pre>
2933+
<span class="tok-k">module</span> <span class="tok-nc">Null_undefined</span> <span class="tok-o">=</span> <span class="tok-nc">Js_null_undefined</span></code></pre>
29352934
</div>
29362935
</div>
29372936
<div class="paragraph">
@@ -2947,48 +2946,6 @@ <h2 id="_js_module"><a class="anchor" href="#_js_module"></a>Js module</h2>
29472946
<span class="tok-k">external</span> <span class="tok-n">empty</span> <span class="tok-o">:</span> <span class="tok-k">&#39;</span><span class="tok-n">a</span> <span class="tok-n">t</span> <span class="tok-o">=</span> <span class="tok-s2">&quot;null&quot;</span> <span class="tok-o">[@@</span><span class="tok-n">bs</span><span class="tok-o">.</span><span class="tok-k">val</span><span class="tok-o">]</span></code></pre>
29482947
</div>
29492948
</div>
2950-
<div class="paragraph">
2951-
<p>The interface for <code>Js.Types</code> is as below</p>
2952-
</div>
2953-
<div class="listingblock">
2954-
<div class="title">Js.Types module</div>
2955-
<div class="content">
2956-
<pre class="pygments highlight"><code data-lang="ocaml"><span class="tok-k">type</span> <span class="tok-n">symbol</span>
2957-
<span class="tok-c">(**Js symbol type only available in ES6 *)</span>
2958-
2959-
<span class="tok-k">type</span> <span class="tok-n">obj_val</span>
2960-
<span class="tok-k">type</span> <span class="tok-n">undefined_val</span>
2961-
<span class="tok-c">(** This type has only one value [undefined] *)</span>
2962-
<span class="tok-k">type</span> <span class="tok-n">null_val</span>
2963-
<span class="tok-c">(** This type has only one value [null] *)</span>
2964-
<span class="tok-k">type</span> <span class="tok-n">function_val</span>
2965-
2966-
<span class="tok-k">type</span> <span class="tok-o">_</span> <span class="tok-n">t</span> <span class="tok-o">=</span>
2967-
<span class="tok-o">|</span> <span class="tok-nc">Undefined</span> <span class="tok-o">:</span> <span class="tok-n">undefined_val</span> <span class="tok-n">t</span>
2968-
<span class="tok-o">|</span> <span class="tok-nc">Null</span> <span class="tok-o">:</span> <span class="tok-n">null_val</span> <span class="tok-n">t</span>
2969-
<span class="tok-o">|</span> <span class="tok-nc">Boolean</span> <span class="tok-o">:</span> <span class="tok-nn">Js</span><span class="tok-p">.</span><span class="tok-n">boolean</span> <span class="tok-n">t</span>
2970-
<span class="tok-o">|</span> <span class="tok-nc">Number</span> <span class="tok-o">:</span> <span class="tok-kt">float</span> <span class="tok-n">t</span>
2971-
<span class="tok-o">|</span> <span class="tok-nc">String</span> <span class="tok-o">:</span> <span class="tok-kt">string</span> <span class="tok-n">t</span>
2972-
<span class="tok-o">|</span> <span class="tok-nc">Function</span> <span class="tok-o">:</span> <span class="tok-n">function_val</span> <span class="tok-n">t</span>
2973-
<span class="tok-o">|</span> <span class="tok-nc">Object</span> <span class="tok-o">:</span> <span class="tok-n">obj_val</span> <span class="tok-n">t</span>
2974-
<span class="tok-o">|</span> <span class="tok-nc">Symbol</span> <span class="tok-o">:</span> <span class="tok-n">symbol</span> <span class="tok-n">t</span>
2975-
2976-
<span class="tok-k">val</span> <span class="tok-n">reify_type</span> <span class="tok-o">:</span> <span class="tok-k">&#39;</span><span class="tok-n">a</span> <span class="tok-o">-&gt;</span> <span class="tok-k">&#39;</span><span class="tok-n">b</span> <span class="tok-n">t</span> <span class="tok-o">*</span> <span class="tok-k">&#39;</span><span class="tok-n">b</span>
2977-
<span class="tok-c">(** given any value it returns its type and the same value.</span>
2978-
<span class="tok-c"> Note that since [&#39;b t] is GADT, the type system will reify its type automatically,</span>
2979-
<span class="tok-c"> for example</span>
2980-
<span class="tok-c"> {[</span>
2981-
<span class="tok-c"> match reify_type &quot;3&quot; with</span>
2982-
<span class="tok-c"> | String, v -&gt; v ^ &quot; this type safe control flow analysis will infer v as string&quot;</span>
2983-
<span class="tok-c"> | _ -&gt; assert false</span>
2984-
<span class="tok-c"> ]}</span>
2985-
<span class="tok-c"> *)</span>
2986-
<span class="tok-k">val</span> <span class="tok-n">test</span> <span class="tok-o">:</span> <span class="tok-k">&#39;</span><span class="tok-n">a</span> <span class="tok-o">-&gt;</span> <span class="tok-k">&#39;</span><span class="tok-n">b</span> <span class="tok-n">t</span> <span class="tok-o">-&gt;</span> <span class="tok-kt">bool</span>
2987-
<span class="tok-c">(** {[</span>
2988-
<span class="tok-c"> test &quot;x&quot; String = true</span>
2989-
<span class="tok-c"> ]}*)</span></code></pre>
2990-
</div>
2991-
</div>
29922949
<div class="listingblock">
29932950
<div class="title">Js Utility functions</div>
29942951
<div class="content">

docs/js-demo/examples/examples.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,14 @@
3939
"file" : "for_loop.ml",
4040
"eval" : true
4141
},
42-
"Use Standard Library" : {
42+
"Use OCaml Standard Library" : {
4343
"file" : "use_stdlib.ml",
4444
"eval" : true
4545
},
46+
"Use JS standard Library(WIP)" : {
47+
"file" : "use_js_stdlib.ml",
48+
"eval" : true
49+
},
4650
"JS Objects" : {
4751
"file" : "js_object.ml",
4852
"eval" : true
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
open Js
2+
let () =
3+
[| 1; 2; 3; 4 |]
4+
|> Array.filter (fun [@bs] x -> x > 2)
5+
|> Array.mapi (fun [@bs] x i -> x + i)
6+
|> Array.reduce (fun [@bs] x y -> x + y) 0
7+
|> log

docs/js-demo/exports.js

Lines changed: 26036 additions & 26034 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/js-demo/pre_load.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/js-demo/stdlib/js.js

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,30 @@
22
define(["exports"],
33
function(exports){
44
'use strict';
5-
var Null = /* module */[];
5+
var Null = 0;
66

7-
var Undefined = /* module */[];
7+
var Undefined = 0;
88

9-
var Null_undefined = /* module */[];
9+
var Null_undefined = 0;
10+
11+
var Types = 0;
12+
13+
var Dict = 0;
14+
15+
var $$Array = 0;
16+
17+
var $$String = 0;
18+
19+
var Re = 0;
1020

1121
exports.Null = Null;
1222
exports.Undefined = Undefined;
1323
exports.Null_undefined = Null_undefined;
24+
exports.Types = Types;
25+
exports.Dict = Dict;
26+
exports.$$Array = $$Array;
27+
exports.$$String = $$String;
28+
exports.Re = Re;
1429

1530
})
1631
/* No side effect */

docs/js-demo/stdlib/js_dict.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
'use strict';
2+
define(["exports"],
3+
function(exports){
4+
'use strict';
5+
6+
7+
8+
})
9+
/* No side effect */

docs/js-demo/stdlib/js_null.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
'use strict';
2+
define(["exports"],
3+
function(exports){
4+
'use strict';
5+
6+
7+
8+
})
9+
/* No side effect */
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
'use strict';
2+
define(["exports"],
3+
function(exports){
4+
'use strict';
5+
6+
7+
8+
})
9+
/* No side effect */

docs/js-demo/stdlib/js_types.js

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
'use strict';
2+
define(["exports"],
3+
function(exports){
4+
'use strict';
5+
function reify_type(x) {
6+
if (typeof x === "undefined") {
7+
return /* tuple */[
8+
/* Undefined */0,
9+
x
10+
];
11+
}
12+
else if (typeof x === "null") {
13+
return /* tuple */[
14+
/* Null */1,
15+
x
16+
];
17+
}
18+
else if (typeof x === "number") {
19+
return /* tuple */[
20+
/* Number */3,
21+
x
22+
];
23+
}
24+
else if (typeof x === "string") {
25+
return /* tuple */[
26+
/* String */4,
27+
x
28+
];
29+
}
30+
else if (typeof x === "boolean") {
31+
return /* tuple */[
32+
/* Boolean */2,
33+
x
34+
];
35+
}
36+
else if (typeof x === "function") {
37+
return /* tuple */[
38+
/* Function */5,
39+
x
40+
];
41+
}
42+
else if (typeof x === "object") {
43+
return /* tuple */[
44+
/* Object */6,
45+
x
46+
];
47+
}
48+
else {
49+
return /* tuple */[
50+
/* Symbol */7,
51+
x
52+
];
53+
}
54+
}
55+
56+
function test(x, v) {
57+
switch (v) {
58+
case 0 :
59+
return +(typeof x === "undefined");
60+
case 1 :
61+
return +(typeof x === "Js.null");
62+
case 2 :
63+
return +(typeof x === "boolean");
64+
case 3 :
65+
return +(typeof x === "number");
66+
case 4 :
67+
return +(typeof x === "string");
68+
case 5 :
69+
return +(typeof x === "function");
70+
case 6 :
71+
return +(typeof x === "object");
72+
case 7 :
73+
return +(typeof x === "symbol");
74+
75+
}
76+
}
77+
78+
exports.reify_type = reify_type;
79+
exports.test = test;
80+
81+
})
82+
/* No side effect */

0 commit comments

Comments
 (0)