gather utility functions which are necessary in bootstrap stage
This commit is contained in:
parent
eb4202cf34
commit
55105dc14f
|
@ -40,10 +40,9 @@
|
||||||
er-macro-transformer
|
er-macro-transformer
|
||||||
ir-macro-transformer))
|
ir-macro-transformer))
|
||||||
|
|
||||||
;;; core syntaces
|
;;; bootstrap utilities
|
||||||
(define-library (picrin core-syntax)
|
(define-library (picrin bootstrap-tools)
|
||||||
(import (scheme base)
|
(import (scheme base))
|
||||||
(picrin macro))
|
|
||||||
|
|
||||||
(define (list . args) args)
|
(define (list . args) args)
|
||||||
|
|
||||||
|
@ -61,6 +60,22 @@
|
||||||
(cons (f (car list))
|
(cons (f (car list))
|
||||||
(map f (cdr list)))))
|
(map f (cdr list)))))
|
||||||
|
|
||||||
|
(define (append xs ys)
|
||||||
|
(if (null? xs)
|
||||||
|
ys
|
||||||
|
(cons (car xs)
|
||||||
|
(append (cdr xs) ys))))
|
||||||
|
|
||||||
|
(export list map append
|
||||||
|
caar cadr cdar cddr
|
||||||
|
cadar caddr cdddr))
|
||||||
|
|
||||||
|
;;; core syntaces
|
||||||
|
(define-library (picrin core-syntax)
|
||||||
|
(import (scheme base)
|
||||||
|
(picrin macro)
|
||||||
|
(picrin bootstrap-tools))
|
||||||
|
|
||||||
(define-syntax let
|
(define-syntax let
|
||||||
(er-macro-transformer
|
(er-macro-transformer
|
||||||
(lambda (expr r compare)
|
(lambda (expr r compare)
|
||||||
|
@ -110,12 +125,6 @@
|
||||||
(r 'it)
|
(r 'it)
|
||||||
(cons (r 'or) (cdr exprs)))))))))
|
(cons (r 'or) (cdr exprs)))))))))
|
||||||
|
|
||||||
(define (append xs ys)
|
|
||||||
(if (null? xs)
|
|
||||||
ys
|
|
||||||
(cons (car xs)
|
|
||||||
(append (cdr xs) ys))))
|
|
||||||
|
|
||||||
(define-syntax quasiquote
|
(define-syntax quasiquote
|
||||||
(er-macro-transformer
|
(er-macro-transformer
|
||||||
(lambda (expr r compare?)
|
(lambda (expr r compare?)
|
||||||
|
@ -259,7 +268,8 @@
|
||||||
(define-library (picrin multiple-value)
|
(define-library (picrin multiple-value)
|
||||||
(import (scheme base)
|
(import (scheme base)
|
||||||
(picrin macro)
|
(picrin macro)
|
||||||
(picrin core-syntax))
|
(picrin core-syntax)
|
||||||
|
(picrin bootstrap-tools))
|
||||||
|
|
||||||
(define *values-tag* (cons #f '()))
|
(define *values-tag* (cons #f '()))
|
||||||
|
|
||||||
|
@ -276,17 +286,6 @@
|
||||||
(apply consumer (cdr res))
|
(apply consumer (cdr res))
|
||||||
(consumer res))))
|
(consumer res))))
|
||||||
|
|
||||||
(define (cadr p) (car (cdr p)))
|
|
||||||
(define (cddr p) (cdr (cdr p)))
|
|
||||||
(define (cdar p) (cdr (car p)))
|
|
||||||
(define (caar p) (car (car p)))
|
|
||||||
|
|
||||||
(define (map f list)
|
|
||||||
(if (null? list)
|
|
||||||
list
|
|
||||||
(cons (f (car list))
|
|
||||||
(map f (cdr list)))))
|
|
||||||
|
|
||||||
(define-syntax let*-values
|
(define-syntax let*-values
|
||||||
(er-macro-transformer
|
(er-macro-transformer
|
||||||
(lambda (form r c)
|
(lambda (form r c)
|
||||||
|
|
Loading…
Reference in New Issue