67 |
`(((,> %--num-args ,(+ num-required num-optional)) |
`(((,> %--num-args ,(+ num-required num-optional)) |
68 |
(,error "Wrong number of args (too many args)")))) |
(,error "Wrong number of args (too many args)")))) |
69 |
(else |
(else |
70 |
(@bind ,(append (map (lambda (i) |
(, @bind ,(append (map (lambda (i) |
71 |
(list (list-ref required i) |
(list (list-ref required i) |
72 |
`(,list-ref %--args ,i))) |
`(,list-ref %--args ,i))) |
73 |
(iota num-required)) |
(iota num-required)) |
74 |
(map (lambda (i) |
(map (lambda (i) |
75 |
(let ((i+nr (+ i num-required))) |
(let ((i+nr (+ i num-required))) |
76 |
(list (list-ref optional i) |
(list (list-ref optional i) |
77 |
`(,if (,> %--num-args ,i+nr) |
`(,if (,> %--num-args ,i+nr) |
78 |
(,list-ref %--args ,i+nr) |
(,list-ref %--args ,i+nr) |
79 |
#f)))) |
,%nil)))) |
80 |
(iota num-optional)) |
(iota num-optional)) |
81 |
(if rest |
(if rest |
82 |
(list (list rest |
(list (list rest |
83 |
`(,if (,> %--num-args |
`(,if (,> %--num-args |
84 |
,(+ num-required |
,(+ num-required |
85 |
num-optional)) |
num-optional)) |
86 |
(,list-tail %--args |
(,list-tail %--args |
87 |
,(+ num-required |
,(+ num-required |
88 |
num-optional)) |
num-optional)) |
89 |
'()))) |
,%nil))) |
90 |
'())) |
'())) |
91 |
,@(map transformer (cddr exp))))))))))) |
,@(map transformer (cddr exp))))))))))) |
92 |
|
|
93 |
(define (set-not-subr! proc boolean) |
(define (set-not-subr! proc boolean) |
94 |
(set! (not-subr? proc) boolean)) |
(set! (not-subr? proc) boolean)) |
101 |
(,set-procedure-property! %--lambda (,quote name) (,quote ,name)) |
(,set-procedure-property! %--lambda (,quote name) (,quote ,name)) |
102 |
(,set-not-subr! %--lambda #t) |
(,set-not-subr! %--lambda #t) |
103 |
,@(if is |
,@(if is |
104 |
`((,set! (,interactive-spec %--lambda) (,quote ,is))) |
`((,set! (,interactive-specification %--lambda) (,quote ,is))) |
105 |
'()) |
'()) |
106 |
%--lambda))) |
%--lambda))) |
107 |
|
|