From 656825be9ef499c70e84a18046ebd45aa1627c77 Mon Sep 17 00:00:00 2001 From: Danny Yoo Date: Mon, 20 Feb 2012 13:36:05 -0500 Subject: [PATCH] cadddr --- compiler/kernel-primitives.rkt | 1 + js-assembler/runtime-src/baselib-primitives.js | 12 ++++++++++++ lang/kernel.rkt | 2 +- version.rkt | 2 +- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/compiler/kernel-primitives.rkt b/compiler/kernel-primitives.rkt index 88053e5..f210cae 100644 --- a/compiler/kernel-primitives.rkt +++ b/compiler/kernel-primitives.rkt @@ -38,6 +38,7 @@ 'caadr 'cdddr 'cdadr + 'cadddr 'list 'list? 'list* diff --git a/js-assembler/runtime-src/baselib-primitives.js b/js-assembler/runtime-src/baselib-primitives.js index dde4ddb..a033096 100644 --- a/js-assembler/runtime-src/baselib-primitives.js +++ b/js-assembler/runtime-src/baselib-primitives.js @@ -121,6 +121,11 @@ return isPair(x) && isPair(x.rest) && isPair(x.rest.rest); }, 'caddrable value'); + var checkCadddrPair = baselib.check.makeCheckArgumentType( + function(x) { + return isPair(x) && isPair(x.rest) && isPair(x.rest.rest) && isPair(x.rest.rest.rest); + }, + 'cadddrable value'); var checkCaadrPair = baselib.check.makeCheckArgumentType( function(x) { return isPair(x) && isPair(x.rest) && isPair(x.rest.first); @@ -701,6 +706,13 @@ var firstArg = checkCdadrPair(M, 'cdadr', 0); return firstArg.rest.first.rest; }); + installPrimitiveProcedure( + 'cadddr', + 1, + function (M) { + var firstArg = checkCadddrPair(M, 'cadddr', 0); + return firstArg.rest.rest.rest.first; + }); installPrimitiveProcedure( 'pair?', 1, diff --git a/lang/kernel.rkt b/lang/kernel.rkt index 5195dd2..97ce1dd 100644 --- a/lang/kernel.rkt +++ b/lang/kernel.rkt @@ -392,7 +392,7 @@ box? ;; cddar caddr cdddr -;; cadddr + cadddr length list* list-ref diff --git a/version.rkt b/version.rkt index da2ee31..e49050b 100644 --- a/version.rkt +++ b/version.rkt @@ -7,4 +7,4 @@ (provide version) (: version String) -(define version "1.155") +(define version "1.156")