diff --git a/compiler/kernel-primitives.rkt b/compiler/kernel-primitives.rkt index 357f8d3..ac13bab 100644 --- a/compiler/kernel-primitives.rkt +++ b/compiler/kernel-primitives.rkt @@ -115,6 +115,9 @@ 'hash-values 'string-copy + + 'unsafe-car + 'unsafe-cdr )) (define-predicate KernelPrimitiveName? KernelPrimitiveName) diff --git a/js-assembler/runtime-src/baselib-primitives.js b/js-assembler/runtime-src/baselib-primitives.js index 16a661c..db35943 100644 --- a/js-assembler/runtime-src/baselib-primitives.js +++ b/js-assembler/runtime-src/baselib-primitives.js @@ -587,6 +587,13 @@ return baselib.lists.listRef(lst, baselib.numbers.toFixnum(index)); }); + installPrimitiveProcedure( + 'unsafe-car', + 1, + function (M) { + var firstArg = checkAny(M, 'unsafe-car', 0); + return firstArg.first; + }); installPrimitiveProcedure( 'car', @@ -610,6 +617,15 @@ var firstArg = checkCadrPair(M, 'cadr', 0); return firstArg.first.rest; }); + + installPrimitiveProcedure( + 'unsafe-cdr', + 1, + function (M) { + var firstArg = checkAny(M, 'unsafe-cdr', 0); + return firstArg.rest; + }); + installPrimitiveProcedure( 'cdr', 1,