on 8c19e30 help sign in
Idris-dev/jsrts/Runtime-common.js
51 lines 1.1 kB history raw
1var __IDRRT__ZERO = __IDRRT__bigInt("0");
2var __IDRRT__ONE = __IDRRT__bigInt("1");
4/** @constructor */
5var __IDRRT__Type = function(type) {
6 this.type = type;
7};
9var __IDRRT__Int = new __IDRRT__Type('Int');
10var __IDRRT__Char = new __IDRRT__Type('Char');
11var __IDRRT__String = new __IDRRT__Type('String');
12var __IDRRT__Integer = new __IDRRT__Type('Integer');
13var __IDRRT__Float = new __IDRRT__Type('Float');
14var __IDRRT__Ptr = new __IDRRT__Type('Pointer');
15var __IDRRT__Forgot = new __IDRRT__Type('Forgot');
18/** @constructor */
19var __IDRRT__Cont = function(k) {
20 this.k = k;
21};
23var __IDRRT__ffiWrap = function(fid) {
24 return function(){
25 var res = fid;
26 var i = 0;
27 var arg;
28 while (res instanceof __IDRRT__Con){
29 arg = arguments[i];
30 res = __IDRRT__tailcall(function(){
31 return __IDR__mAPPLY0(res, arg);
32 });
33 ++i;
34 }
35 return res;
36 }
37};
39/** @constructor */
40var __IDRRT__Con = function(tag,vars) {
41 this.tag = tag;
42 this.vars = vars;
43};
45var __IDRRT__tailcall = function(k) {
46 var ret = k();
47 while (ret instanceof __IDRRT__Cont)
48 ret = ret.k();
50 return ret;
51};