Skip to content

Commit

Permalink
repl stability improved, list structure simplified to array; function…
Browse files Browse the repository at this point in the history
…s changed accordingly
  • Loading branch information
benbscholz committed Feb 27, 2012
1 parent cf7d83a commit 916c237
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 24 deletions.
3 changes: 2 additions & 1 deletion lib/stdlib.jkt
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
((empty? l) false) ((empty? l) false)
((eq? m (first l)) true) ((eq? m (first l)) true)
(else (member m (rest l))))) (else (member m (rest l)))))

(define (take l n) (define (take l n)
(cond (cond
((zero? n) empty) ((zero? n) empty)
Expand All @@ -51,3 +51,4 @@


(define (drop l n) (define (drop l n)
(take (reverse l) n)) (take (reverse l) n))

82 changes: 59 additions & 23 deletions src/built_ins.js
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -41,29 +41,39 @@ var div_proc = function () {
return val; return val;
}; };


var list = function () { //var list = function () {
//var args = [],
//i,
//j,
//l,
//prev,
//temp;
//for (i = 0; i < arguments.length; i += 1) {
//args[i] = arguments[i];
//}
//l = [];
//prev = [];
//temp = [];
//for (i = args.length-1; i >= 0; i -= 1) {
//l = [args[i], prev];
//prev = l;
//temp = [];
//for (j = 0; j < prev.length; j += 1) {
//temp[j] = prev[j];
//}
//prev = temp;
//}
//return l;
//};

var list = function () {
var args = [], var args = [],
i, i;
j,
l,
prev,
temp;
for (i = 0; i < arguments.length; i += 1) { for (i = 0; i < arguments.length; i += 1) {
args[i] = arguments[i]; args.push(arguments[i]);
}
l = [];
prev = [];
temp = [];
for (i = args.length-1; i >= 0; i -= 1) {
l = [args[i], prev];
prev = l;
temp = [];
for (j = 0; j < prev.length; j += 1) {
temp[j] = prev[j];
}
prev = temp;
} }
return l; args.push([]);
return args;
}; };


var vector_set = function (v, p, val) { var vector_set = function (v, p, val) {
Expand All @@ -72,17 +82,41 @@ var vector_set = function (v, p, val) {
return a; return a;
}; };


var _isArray = function (item) {
if (item && typeof item === 'object' && item.constructor === Array)
return true;
else if (Object.prototype.toString.call(item) == '[object Array]')
return true;
else
return false;
};

var mod_proc = function (a,b) {return a%b;}; var mod_proc = function (a,b) {return a%b;};
var lt_proc = function (a,b) {return a<b;}; var lt_proc = function (a,b) {return a<b;};
var gt_proc = function (a,b) {return a>b;}; var gt_proc = function (a,b) {return a>b;};
var lte_proc = function (a,b) {return a<=b;}; var lte_proc = function (a,b) {return a<=b;};
var gte_proc = function (a,b) {return a>=b;}; var gte_proc = function (a,b) {return a>=b;};
var eq_proc = function (a,b) {return a===b;}; var eq_proc = function (a,b) {return a===b;};
var car = function (a) {return a[0];}; var car = function (a) {return a[0];};
var cdr = function (a) {return a[1];}; var cdr = function (a) {return a.slice(1,a.length);};
var cons = function (a,b) {return [a,b];}; var first = car;
var rest = cdr;
var cons = function (a,b) {
var isa, isb;
isa = _isArray(a);
isb = _isArray(b);
if (isa && isb) {
return a.concat(b);
} else if (isa) {
return a.push(b);
} else if (isb) {
return b.push(a);
} else {
return [a,b,[]];
}
};
var empty_bool = function (a) {return (a instanceof Array && a.length === 0);}; var empty_bool = function (a) {return (a instanceof Array && a.length === 0);};
var list_bool = function (a) {return (a instanceof Array && a.length === 2);}; var list_bool = function (a) {return _isArray(a) && a[-1] === [];};
var equal_bool = function (a,b) {return a==b;}; var equal_bool = function (a,b) {return a==b;};
var positive_bool = function (a) {return a>0;}; var positive_bool = function (a) {return a>0;};
var negative_bool = function (a) {return a<0; }; var negative_bool = function (a) {return a<0; };
Expand All @@ -95,6 +129,8 @@ var vector_ref = function (v, p) {return v[p];};
var vector_append = function (a, b) {return a.concat(b);}; var vector_append = function (a, b) {return a.concat(b);};
var empty = []; var empty = [];
var not = function (a) { return !a; }; var not = function (a) { return !a; };
var add1 = function (a) { return a+1; };
var sub1 = function (a) { return a-1; };
var abs = Math.abs; var abs = Math.abs;
var acos = Math.acos; var acos = Math.acos;
var asin = Math.asin; var asin = Math.asin;
Expand Down

0 comments on commit 916c237

Please sign in to comment.