; Copyright (c) 1994 by Richard Kelsey. See file COPYING. (define-local-syntax (define-primitive id nargs) (let ((args (reverse (list-tail '(z y x) (- '3 nargs))))) `(define (,id . ,args) (call-primitively ,id . ,args)))) (define-primitive + 2) (define-primitive - 2) (define-primitive * 2) (define-primitive < 2) (define-primitive make-vector 2) (define-primitive pointer-add 2) (define (vector-ref vec index) (call-primitively contents (pointer-add vec index))) (define (vector-set! vec index value) (call-primitively set-contents! (pointer-add vec index) value)) (define (cons x y) (let ((p (make-vector 2 0))) (vector-set! p 0 x) (vector-set! p 1 y) p)) (define (car p) (vector-ref p 0)) (define (cdr p) (vector-ref p 1))