From 324702896a37440de5736d894e89ff10dd5d3b17 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Fri, 29 Jul 2016 03:12:44 -0400 Subject: [PATCH] Add expected definitions --- scheme/cxr.sld | 63 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 59 insertions(+), 4 deletions(-) diff --git a/scheme/cxr.sld b/scheme/cxr.sld index dc58cf3d..54becfb6 100644 --- a/scheme/cxr.sld +++ b/scheme/cxr.sld @@ -4,13 +4,68 @@ ;;;; Copyright (c) 2014-2016, Justin Ethier ;;;; All rights reserved. ;;;; -;;;; A stub for the cxr library from r7rs. -;;;; At least for now, the actual cxr functions are primitives in the runtime, -;;;; so this library does not need to be imported to use them. +;;;; The cxr library from r7rs. ;;;; (define-library (scheme cxr) - (export caaaaar) + (export + caar + cadr + cdar + cddr + caaar + caadr + cadar + caddr + cdaar + cdadr + cddar + cdddr + caaaar + caaadr + caadar + caaddr + cadaar + cadadr + caddar + cadddr + cdaaar + cdaadr + cdadar + cdaddr + cddaar + cddadr + cdddar + cddddr + caaaaar) (begin + (define (caar lis) (car(car(lis)))) + (define (cadr lis) (car(cdr(lis)))) + (define (cdar lis) (cdr(car(lis)))) + (define (cddr lis) (cdr(cdr(lis)))) + (define (caaar lis) (car(car(car(lis))))) + (define (caadr lis) (car(car(cdr(lis))))) + (define (cadar lis) (car(cdr(car(lis))))) + (define (caddr lis) (car(cdr(cdr(lis))))) + (define (cdaar lis) (cdr(car(car(lis))))) + (define (cdadr lis) (cdr(car(cdr(lis))))) + (define (cddar lis) (cdr(cdr(car(lis))))) + (define (cdddr lis) (cdr(cdr(cdr(lis))))) + (define (caaaar lis) (car(car(car(car(lis)))))) + (define (caaadr lis) (car(car(car(cdr(lis)))))) + (define (caadar lis) (car(car(cdr(car(lis)))))) + (define (caaddr lis) (car(car(cdr(cdr(lis)))))) + (define (cadaar lis) (car(cdr(car(car(lis)))))) + (define (cadadr lis) (car(cdr(car(cdr(lis)))))) + (define (caddar lis) (car(cdr(cdr(car(lis)))))) + (define (cadddr lis) (car(cdr(cdr(cdr(lis)))))) + (define (cdaaar lis) (cdr(car(car(car(lis)))))) + (define (cdaadr lis) (cdr(car(car(cdr(lis)))))) + (define (cdadar lis) (cdr(car(cdr(car(lis)))))) + (define (cdaddr lis) (cdr(car(cdr(cdr(lis)))))) + (define (cddaar lis) (cdr(cdr(car(car(lis)))))) + (define (cddadr lis) (cdr(cdr(car(cdr(lis)))))) + (define (cdddar lis) (cdr(cdr(cdr(car(lis)))))) + (define (cddddr lis) (cdr(cdr(cdr(cdr(lis)))))) ;; Non-standard, this is just a placeholder (define (caaaaar lis) (car (car (car (car (car lis))))))))