adding more of the c*r functions
This commit is contained in:
parent
5f3f94a8ae
commit
a0b708c799
|
@ -30,9 +30,14 @@
|
||||||
'cons
|
'cons
|
||||||
'car
|
'car
|
||||||
'caar
|
'caar
|
||||||
|
'cdar
|
||||||
'cdr
|
'cdr
|
||||||
'cadr
|
'cadr
|
||||||
|
'cddr
|
||||||
'caddr
|
'caddr
|
||||||
|
'caadr
|
||||||
|
'cdddr
|
||||||
|
'cdadr
|
||||||
'list
|
'list
|
||||||
'list?
|
'list?
|
||||||
'list*
|
'list*
|
||||||
|
|
|
@ -101,11 +101,41 @@
|
||||||
return isPair(x) && isPair(x.first);
|
return isPair(x) && isPair(x.first);
|
||||||
},
|
},
|
||||||
'caarable value');
|
'caarable value');
|
||||||
|
var checkCdarPair = baselib.check.makeCheckArgumentType(
|
||||||
|
function(x) {
|
||||||
|
return isPair(x) && isPair(x.first);
|
||||||
|
},
|
||||||
|
'cdarable value');
|
||||||
var checkCadrPair = baselib.check.makeCheckArgumentType(
|
var checkCadrPair = baselib.check.makeCheckArgumentType(
|
||||||
function(x) {
|
function(x) {
|
||||||
return isPair(x) && isPair(x.rest);
|
return isPair(x) && isPair(x.rest);
|
||||||
},
|
},
|
||||||
'cadrable value');
|
'cadrable value');
|
||||||
|
var checkCddrPair = baselib.check.makeCheckArgumentType(
|
||||||
|
function(x) {
|
||||||
|
return isPair(x) && isPair(x.rest);
|
||||||
|
},
|
||||||
|
'cddrable value');
|
||||||
|
var checkCaddrPair = baselib.check.makeCheckArgumentType(
|
||||||
|
function(x) {
|
||||||
|
return isPair(x) && isPair(x.rest) && isPair(x.rest.rest);
|
||||||
|
},
|
||||||
|
'caddrable value');
|
||||||
|
var checkCaadrPair = baselib.check.makeCheckArgumentType(
|
||||||
|
function(x) {
|
||||||
|
return isPair(x) && isPair(x.rest) && isPair(x.rest.first);
|
||||||
|
},
|
||||||
|
'caadrable value');
|
||||||
|
var checkCdddrPair = baselib.check.makeCheckArgumentType(
|
||||||
|
function(x) {
|
||||||
|
return isPair(x) && isPair(x.rest) && isPair(x.rest.rest);
|
||||||
|
},
|
||||||
|
'cdddrable value');
|
||||||
|
var checkCdadrPair = baselib.check.makeCheckArgumentType(
|
||||||
|
function(x) {
|
||||||
|
return isPair(x) && isPair(x.rest) && isPair(x.rest.first);
|
||||||
|
},
|
||||||
|
'cdadrable value');
|
||||||
var checkList = baselib.check.checkList;
|
var checkList = baselib.check.checkList;
|
||||||
var checkListofChars = baselib.check.makeCheckListofArgumentType(isChar, 'character');
|
var checkListofChars = baselib.check.makeCheckListofArgumentType(isChar, 'character');
|
||||||
var checkListofPairs = baselib.check.makeCheckListofArgumentType(isPair, 'pair');
|
var checkListofPairs = baselib.check.makeCheckListofArgumentType(isPair, 'pair');
|
||||||
|
@ -594,7 +624,13 @@
|
||||||
var firstArg = checkAny(M, 'unsafe-car', 0);
|
var firstArg = checkAny(M, 'unsafe-car', 0);
|
||||||
return firstArg.first;
|
return firstArg.first;
|
||||||
});
|
});
|
||||||
|
installPrimitiveProcedure(
|
||||||
|
'unsafe-cdr',
|
||||||
|
1,
|
||||||
|
function (M) {
|
||||||
|
var firstArg = checkAny(M, 'unsafe-cdr', 0);
|
||||||
|
return firstArg.rest;
|
||||||
|
});
|
||||||
installPrimitiveProcedure(
|
installPrimitiveProcedure(
|
||||||
'car',
|
'car',
|
||||||
1,
|
1,
|
||||||
|
@ -602,7 +638,13 @@
|
||||||
var firstArg = checkPair(M, 'car', 0);
|
var firstArg = checkPair(M, 'car', 0);
|
||||||
return firstArg.first;
|
return firstArg.first;
|
||||||
});
|
});
|
||||||
|
installPrimitiveProcedure(
|
||||||
|
'cdr',
|
||||||
|
1,
|
||||||
|
function (M) {
|
||||||
|
var firstArg = checkPair(M, 'cdr', 0);
|
||||||
|
return firstArg.rest;
|
||||||
|
});
|
||||||
installPrimitiveProcedure(
|
installPrimitiveProcedure(
|
||||||
'caar',
|
'caar',
|
||||||
1,
|
1,
|
||||||
|
@ -617,23 +659,48 @@
|
||||||
var firstArg = checkCadrPair(M, 'cadr', 0);
|
var firstArg = checkCadrPair(M, 'cadr', 0);
|
||||||
return firstArg.rest.first;
|
return firstArg.rest.first;
|
||||||
});
|
});
|
||||||
|
|
||||||
installPrimitiveProcedure(
|
installPrimitiveProcedure(
|
||||||
'unsafe-cdr',
|
'cdar',
|
||||||
1,
|
1,
|
||||||
function (M) {
|
function (M) {
|
||||||
var firstArg = checkAny(M, 'unsafe-cdr', 0);
|
var firstArg = checkCdarPair(M, 'cdar', 0);
|
||||||
return firstArg.rest;
|
return firstArg.first.rest;
|
||||||
});
|
});
|
||||||
|
|
||||||
installPrimitiveProcedure(
|
installPrimitiveProcedure(
|
||||||
'cdr',
|
'cddr',
|
||||||
1,
|
1,
|
||||||
function (M) {
|
function (M) {
|
||||||
var firstArg = checkPair(M, 'cdr', 0);
|
var firstArg = checkCddrPair(M, 'cddr', 0);
|
||||||
return firstArg.rest;
|
return firstArg.rest.rest;
|
||||||
|
});
|
||||||
|
installPrimitiveProcedure(
|
||||||
|
'caddr',
|
||||||
|
1,
|
||||||
|
function (M) {
|
||||||
|
var firstArg = checkCaddrPair(M, 'caddr', 0);
|
||||||
|
return firstArg.rest.rest.first;
|
||||||
|
});
|
||||||
|
installPrimitiveProcedure(
|
||||||
|
'caadr',
|
||||||
|
1,
|
||||||
|
function (M) {
|
||||||
|
var firstArg = checkCaadrPair(M, 'caadr', 0);
|
||||||
|
return firstArg.rest.first.first;
|
||||||
|
});
|
||||||
|
installPrimitiveProcedure(
|
||||||
|
'cdddr',
|
||||||
|
1,
|
||||||
|
function (M) {
|
||||||
|
var firstArg = checkCdddrPair(M, 'cdddr', 0);
|
||||||
|
return firstArg.rest.rest.rest;
|
||||||
|
});
|
||||||
|
installPrimitiveProcedure(
|
||||||
|
'cdadr',
|
||||||
|
1,
|
||||||
|
function (M) {
|
||||||
|
var firstArg = checkCdadrPair(M, 'cdadr', 0);
|
||||||
|
return firstArg.rest.first.rest;
|
||||||
});
|
});
|
||||||
|
|
||||||
installPrimitiveProcedure(
|
installPrimitiveProcedure(
|
||||||
'pair?',
|
'pair?',
|
||||||
1,
|
1,
|
||||||
|
|
|
@ -380,17 +380,18 @@ box?
|
||||||
eqv?
|
eqv?
|
||||||
|
|
||||||
caar
|
caar
|
||||||
|
cdar
|
||||||
cadr
|
cadr
|
||||||
;; cdar
|
;; cdar
|
||||||
;; cddr
|
cddr
|
||||||
;; caaar
|
;; caaar
|
||||||
;; caadr
|
caadr
|
||||||
;; cadar
|
;; cadar
|
||||||
;; cdaar
|
;; cdaar
|
||||||
;; cdadr
|
cdadr
|
||||||
;; cddar
|
;; cddar
|
||||||
;; caddr
|
caddr
|
||||||
;; cdddr
|
cdddr
|
||||||
;; cadddr
|
;; cadddr
|
||||||
length
|
length
|
||||||
list*
|
list*
|
||||||
|
|
Loading…
Reference in New Issue
Block a user