From 22c23f4c8c3c69cbd1141293563ebedc776437bb Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Sat, 15 Feb 2014 17:06:08 -0800 Subject: [PATCH] update --- define.rkt | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/define.rkt b/define.rkt index 8404668..e7133b2 100644 --- a/define.rkt +++ b/define.rkt @@ -12,14 +12,14 @@ ;; order of cases matters, of course ;; match more complicated shape first, ;; otherwise second matcher gives false positives - [(_ (name arg ...) body ...) + [(_ (name arg ... . rest-arg) body ...) #'(begin (provide name) - (define (name arg ...) body ...))] - [(_ (name . arg) body ...) + (define (name arg ... . rest-arg) body ...))] + [(_ (name arg ...) body ...) #'(begin (provide name) - (define (name . arg) body ...))] + (define (name arg ...) body ...))] [(_ name body ...) #'(begin (provide name) @@ -28,19 +28,18 @@ (define-syntax (define/provide/contract stx) (syntax-case stx () - [(_ (name arg ...) contract body ...) + [(_ (name arg ... . rest-arg) contract body ...) #'(begin (provide (contract-out [name contract])) - (define (name arg ...) body ...))] - [(_ (name . arg) contract body ...) + (define (name arg ... . rest-arg) body ...))] + [(_ (name arg ...) contract body ...) #'(begin (provide (contract-out [name contract])) - (define (name . arg) body ...))] + (define (name arg ...) body ...))] [(_ name contract body ...) #'(begin (provide (contract-out [name contract])) (define name body ...))])) -(define/provide/contract (foo #:what x) - (#:what integer? . -> . integer?) - (λ(x) x)) \ No newline at end of file +(define/provide (foo x y . z) + (+ x y z)) \ No newline at end of file