From a022941c9898b46ae6b5fc6093afefe9de8b5b3d Mon Sep 17 00:00:00 2001 From: Yuichi Nishiwaki Date: Tue, 5 Aug 2014 02:08:14 +0900 Subject: [PATCH] inline cxr functions --- piclib/scheme/base.scm | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/piclib/scheme/base.scm b/piclib/scheme/base.scm index dc697aa2..02c0f2a4 100644 --- a/piclib/scheme/base.scm +++ b/piclib/scheme/base.scm @@ -736,11 +736,6 @@ (import (picrin record)) - (define (caddr x) (car (cddr x))) - (define (cdddr x) (cdr (cddr x))) - (define (cadddr x) (car (cdddr x))) - (define (cddddr x) (cdr (cdddr x))) - (define (make-record-type name) (let ((rectype (make-record #t))) (record-set! rectype 'name name) @@ -749,9 +744,9 @@ (define-syntax define-record-constructor (ir-macro-transformer (lambda (form inject compare?) - (let ((rectype (cadr form)) - (name (caddr form)) - (fields (cdddr form))) + (let ((rectype (car (cdr form))) + (name (car (cdr (cdr form)))) + (fields (cdr (cdr (cdr form))))) `(define (,name ,@fields) (let ((record (make-record ,rectype))) ,@(map (lambda (field) @@ -762,8 +757,8 @@ (define-syntax define-record-predicate (ir-macro-transformer (lambda (form inject compare?) - (let ((rectype (cadr form)) - (name (caddr form))) + (let ((rectype (car (cdr form))) + (name (car (cdr (cdr form))))) `(define (,name obj) (and (record? obj) (record-of? obj ,rectype))))))) @@ -771,10 +766,10 @@ (define-syntax define-record-field (ir-macro-transformer (lambda (form inject compare?) - (let ((pred (cadr form)) - (field-name (caddr form)) - (accessor (cadddr form)) - (modifier? (cddddr form))) + (let ((pred (car (cdr form))) + (field-name (car (cdr (cdr form)))) + (accessor (car (cdr (cdr (cdr form))))) + (modifier? (cdr (cdr (cdr (cdr form)))))) (if (null? modifier?) `(define (,accessor record) (if (,pred record) @@ -793,13 +788,13 @@ (define-syntax define-record-type (ir-macro-transformer (lambda (form inject compare?) - (let ((name (cadr form)) - (constructor (caddr form)) - (pred (cadddr form)) - (fields (cddddr form))) + (let ((name (car (cdr form))) + (ctor (car (cdr (cdr form)))) + (pred (car (cdr (cdr (cdr form))))) + (fields (cdr (cdr (cdr (cdr form)))))) `(begin (define ,name (make-record-type ',name)) - (define-record-constructor ,name ,@constructor) + (define-record-constructor ,name ,@ctor) (define-record-predicate ,name ,pred) ,@(map (lambda (field) `(define-record-field ,pred ,@field)) fields))))))