[icfp] allow recursive define (need to do same for lets)

This commit is contained in:
ben 2016-03-14 21:31:01 -04:00
parent 9f2e0a92d2
commit 04277f504c
3 changed files with 6 additions and 6 deletions

View File

@ -122,7 +122,7 @@
;; Gets a slice of the label on the half-open interval [i, j)
(: sublabel (case-> (-> label Index label)
(-> label Index Index label)))
(define-values (sublabel)
(define sublabel
(case-lambda
((label i)
(sublabel label i (label-length label)))
@ -137,7 +137,7 @@
;; destructively sets the input label to sublabel.
(: sublabel! (case-> (-> label Index Void)
(-> label Index Index Void)))
(define-values (sublabel!)
(define sublabel!
(case-lambda
((label i)
(sublabel! label i (label-length label)))

View File

@ -30,7 +30,7 @@
(: ds* In-Indexes)
(define ds* (vector n-samples))
(: ds Indexes)
(define-values (ds)
(define ds
(check-array-shape ds*
(λ () (raise-argument-error 'name "Indexes" ds))))
(: vs (Vectorof Flonum))

View File

@ -30,7 +30,7 @@
syntax/parse
syntax/id-table
(for-template
(prefix-in tr: (only-in typed/racket/base define let let-syntax quote set!))
(prefix-in tr: typed/racket/base)
(prefix-in r: (only-in racket/base quote))))
;; =============================================================================
@ -90,9 +90,9 @@
[else (parser stx)]))))
(define f-define
(lambda (stx)
(syntax-parse stx
(syntax-parse stx #:literals (tr:#%plain-lambda)
[(_ name:id v)
#:with v+ (expand-expr (syntax/loc stx v))
#:with (tr:#%plain-lambda (_) v+) (expand-expr (syntax/loc stx (tr:lambda (name) v)))
#:when (syntax-e (syntax/loc stx v+))
#:with m (f-parse (syntax/loc stx v+))
#:when (syntax-e (syntax/loc stx m))