diff --git a/define.rkt b/trivial/define.rkt similarity index 100% rename from define.rkt rename to trivial/define.rkt diff --git a/define/no-colon.rkt b/trivial/define/no-colon.rkt similarity index 100% rename from define/no-colon.rkt rename to trivial/define/no-colon.rkt diff --git a/format.rkt b/trivial/format.rkt similarity index 100% rename from format.rkt rename to trivial/format.rkt diff --git a/format/no-colon.rkt b/trivial/format/no-colon.rkt similarity index 100% rename from format/no-colon.rkt rename to trivial/format/no-colon.rkt diff --git a/function.rkt b/trivial/function.rkt similarity index 100% rename from function.rkt rename to trivial/function.rkt diff --git a/function/no-colon.rkt b/trivial/function/no-colon.rkt similarity index 100% rename from function/no-colon.rkt rename to trivial/function/no-colon.rkt diff --git a/info.rkt b/trivial/info.rkt similarity index 100% rename from info.rkt rename to trivial/info.rkt diff --git a/main.rkt b/trivial/main.rkt similarity index 100% rename from main.rkt rename to trivial/main.rkt diff --git a/math.rkt b/trivial/math.rkt similarity index 100% rename from math.rkt rename to trivial/math.rkt diff --git a/math/no-colon.rkt b/trivial/math/no-colon.rkt similarity index 100% rename from math/no-colon.rkt rename to trivial/math/no-colon.rkt diff --git a/no-colon.rkt b/trivial/no-colon.rkt similarity index 100% rename from no-colon.rkt rename to trivial/no-colon.rkt diff --git a/private/README.md b/trivial/private/README.md similarity index 100% rename from private/README.md rename to trivial/private/README.md diff --git a/private/common.rkt b/trivial/private/common.rkt similarity index 100% rename from private/common.rkt rename to trivial/private/common.rkt diff --git a/private/db.rkt b/trivial/private/db.rkt similarity index 100% rename from private/db.rkt rename to trivial/private/db.rkt diff --git a/private/db/postgres.rkt b/trivial/private/db/postgres.rkt similarity index 100% rename from private/db/postgres.rkt rename to trivial/private/db/postgres.rkt diff --git a/private/db/query.rkt b/trivial/private/db/query.rkt similarity index 100% rename from private/db/query.rkt rename to trivial/private/db/query.rkt diff --git a/private/db/schema.rkt b/trivial/private/db/schema.rkt similarity index 100% rename from private/db/schema.rkt rename to trivial/private/db/schema.rkt diff --git a/private/format.rkt b/trivial/private/format.rkt similarity index 100% rename from private/format.rkt rename to trivial/private/format.rkt diff --git a/private/function.rkt b/trivial/private/function.rkt similarity index 78% rename from private/function.rkt rename to trivial/private/function.rkt index 631cca2..8ccf9f8 100644 --- a/private/function.rkt +++ b/trivial/private/function.rkt @@ -1,6 +1,7 @@ #lang typed/racket/base -;; TODO get type from a lambda AFTER expansion +;; TODO +;; map passing, but cury failig; can't make a lambda like I'd like to ;; ----------------------------------------------------------------------------- @@ -37,12 +38,14 @@ (define (formal->type x) (or (syntax-property x TYPE-KEY) + ;(syntax/loc x Any))) (format-id x "Any"))) ;; Could just use TR's Any from here (define (parse-procedure-arity stx) (syntax-parse stx #:literals (: #%plain-lambda lambda) [(#%plain-lambda (x*:id ...) e* ...) - (syntax/loc stx (x* ...))] + (map formal->type (syntax-e #'(x* ...)))] + ;(syntax/loc stx (x* ...))] ;; TODO polydots, keywords, optional args ;; TODO standard library functions [_ #f])) @@ -58,8 +61,10 @@ (define-syntax (curry: stx) (syntax-parse stx [(_ p:procedure/arity) - #:with p+ (for/fold ([e (quasisyntax/loc stx (p.expanded #,@#'p.evidence))]) - ([x (in-list (reverse (syntax-e #'p.evidence)))]) + #:with x* (for/list ([_t (in-list (syntax-e #'p.evidence))]) (gensym)) + #:with p+ (for/fold ([e (quasisyntax/loc stx (p.expanded #,#'x*))]) + ([x (in-list (reverse (syntax-e #'x*)))] + [t (in-list (syntax-e #'p.evidence))]) (quasisyntax/loc stx (lambda (#,x) #,e))) (syntax/loc stx p+)] @@ -83,8 +88,8 @@ ;; -- #:with Listof-stx (format-id stx "Listof") #:with (e+* ...) - (for/list ([x (in-list (syntax-e #'p.evidence))] + (for/list ([t (in-list (syntax-e #'p.evidence))] [e (in-list (syntax-e #'(e* ...)))]) - (quasisyntax/loc stx (ann #,e (Listof-stx #,(formal->type x))))) + (quasisyntax/loc stx (ann #,e (Listof-stx #,(format-id stx "~a" (syntax-e t)))))) (syntax/loc stx (map p.expanded e+* ...))])))) diff --git a/private/math.rkt b/trivial/private/math.rkt similarity index 100% rename from private/math.rkt rename to trivial/private/math.rkt diff --git a/private/regexp.rkt b/trivial/private/regexp.rkt similarity index 100% rename from private/regexp.rkt rename to trivial/private/regexp.rkt diff --git a/private/set-bang.rkt b/trivial/private/set-bang.rkt similarity index 100% rename from private/set-bang.rkt rename to trivial/private/set-bang.rkt diff --git a/private/test-common.rkt b/trivial/private/test-common.rkt similarity index 100% rename from private/test-common.rkt rename to trivial/private/test-common.rkt diff --git a/private/vector.rkt b/trivial/private/vector.rkt similarity index 100% rename from private/vector.rkt rename to trivial/private/vector.rkt diff --git a/regexp.rkt b/trivial/regexp.rkt similarity index 100% rename from regexp.rkt rename to trivial/regexp.rkt diff --git a/regexp/no-colon.rkt b/trivial/regexp/no-colon.rkt similarity index 100% rename from regexp/no-colon.rkt rename to trivial/regexp/no-colon.rkt diff --git a/scribblings/.gitignore b/trivial/scribblings/.gitignore similarity index 100% rename from scribblings/.gitignore rename to trivial/scribblings/.gitignore diff --git a/scribblings/Makefile b/trivial/scribblings/Makefile similarity index 100% rename from scribblings/Makefile rename to trivial/scribblings/Makefile diff --git a/scribblings/trivial.scrbl b/trivial/scribblings/trivial.scrbl similarity index 100% rename from scribblings/trivial.scrbl rename to trivial/scribblings/trivial.scrbl diff --git a/vector.rkt b/trivial/vector.rkt similarity index 100% rename from vector.rkt rename to trivial/vector.rkt diff --git a/vector/no-colon.rkt b/trivial/vector/no-colon.rkt similarity index 100% rename from vector/no-colon.rkt rename to trivial/vector/no-colon.rkt