trying to reduce size of code some more

This commit is contained in:
Danny Yoo 2012-02-15 17:24:22 -05:00
parent bf9305d5c9
commit a13274d63b
2 changed files with 19 additions and 15 deletions

View File

@ -52,21 +52,11 @@
(assemble-binop-chain "plt.baselib.numbers.divide" checked-operands)] (assemble-binop-chain "plt.baselib.numbers.divide" checked-operands)]
[(add1) [(add1)
(string-append (format "RT.checkedAdd1(M, ~a)" (first operands))]
(format "(typeof(~a)==='number'&&(~a)<9E15?(~a)+1"
(first operands) (first operands) (first operands))
":"
(format "RT.checkedAdd1(M, ~a)" (first operands))
")")]
[(sub1) [(sub1)
(string-append (format "RT.checkedSub1(M, ~a)" (first operands))]
(format "(typeof(~a)==='number'&&(~a)>-9E15?(~a)-1"
(first operands) (first operands) (first operands))
":"
(format "RT.checkedSub1(M, ~a)" (first operands))
")")]
[(<) [(<)
(assemble-boolean-chain "plt.baselib.numbers.lessThan" checked-operands)] (assemble-boolean-chain "plt.baselib.numbers.lessThan" checked-operands)]
@ -88,13 +78,13 @@
(second checked-operands))] (second checked-operands))]
[(car) [(car)
(format "(~a).first" (first checked-operands))] (format "RT.checkedCar(M, ~a)" (first operands))]
[(caar) [(caar)
(format "(~a).first.first" (first checked-operands))] (format "(~a).first.first" (first checked-operands))]
[(cdr) [(cdr)
(format "(~a).rest" (first checked-operands))] (format "RT.checkedCdr(M, ~a)" (first operands))]
[(list) [(list)
(let loop ([checked-operands checked-operands]) (let loop ([checked-operands checked-operands])

View File

@ -806,16 +806,28 @@
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
var checkedAdd1 = function(M, n) { var checkedAdd1 = function(M, n) {
if (typeof(n) === 'number' && n < 9e15) { return n+1; }
return plt.baselib.numbers.add( return plt.baselib.numbers.add(
testArgument(M, 'number', isNumber, n, 0, 'add1'), testArgument(M, 'number', isNumber, n, 0, 'add1'),
1); 1);
}; };
var checkedSub1 = function(M, n) { var checkedSub1 = function(M, n) {
if (typeof(n) === 'number' && n > -9e15) { return n-1; }
return plt.baselib.numbers.subtract( return plt.baselib.numbers.subtract(
testArgument(M, 'number', isNumber, n, 0, 'add1'), testArgument(M, 'number', isNumber, n, 0, 'add1'),
1); 1);
}; };
var checkedCar = function(M, v) {
if (isPair(v)) { return v.first; }
raiseArgumentTypeError(M, 'car', 'pair', 0, v);
};
var checkedCdr = function(M, v) {
if (isPair(v)) { return v.rest; }
raiseArgumentTypeError(M, 'cdr', 'pair', 0, v);
};
@ -957,4 +969,6 @@
exports['checkedAdd1'] = checkedAdd1; exports['checkedAdd1'] = checkedAdd1;
exports['checkedSub1'] = checkedSub1; exports['checkedSub1'] = checkedSub1;
exports['checkedCar'] = checkedCar;
exports['checkedCdr'] = checkedCdr;
}(this.plt, this.plt.baselib)); }(this.plt, this.plt.baselib));