From 04514bc6e7357bb3ffb9e59e54b5a367eeb45226 Mon Sep 17 00:00:00 2001 From: Jay McCarthy Date: Mon, 23 Nov 2015 17:24:57 -0500 Subject: [PATCH] nest and comments --- remix/README | 2 +- remix/stx0.rkt | 3 ++- remix/tests/simple.rkt | 13 +++++++++---- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/remix/README b/remix/README index 7ddff00..1500455 100644 --- a/remix/README +++ b/remix/README @@ -202,5 +202,5 @@ TODO greg's defs https://github.com/greghendershott/defn https://github.com/greghendershott/def-jambda -TODO nest form like def* for things like parameterize that would look +DONE nest form like def* for things like parameterize that would look weird as def* transformers diff --git a/remix/stx0.rkt b/remix/stx0.rkt index 58ee355..5a43a79 100644 --- a/remix/stx0.rkt +++ b/remix/stx0.rkt @@ -237,7 +237,8 @@ (provide def def* (rename-out [def ≙] - [def* ≙*]) + [def* ≙*] + [def* nest]) (rename-out [remix-λ λ] [remix-cond cond] [remix-cut-$ $]) diff --git a/remix/tests/simple.rkt b/remix/tests/simple.rkt index f74b821..6b7a082 100644 --- a/remix/tests/simple.rkt +++ b/remix/tests/simple.rkt @@ -148,20 +148,24 @@ (module+ test {v28 ≡ 28}) -;; def* allows nested binding inside blocks +;; def* allows nested binding inside blocks. This is aliased to nest +;; for def* transformers like parameterize that would look strange +;; otherwise. (def v64 (def* x 2) (def* x {x + x}) (def* x {x + x}) - (def* x {x + x}) + (nest x {x + x}) (def* x {x + x}) (def* x {x + x}) x) (module+ test {v64 ≡ 64}) -;; (def [stx #%posn] (layout x y)) - +;; The lambda and def syntax allow all the normal forms of Racket +;; function arguments. The main exception being rest arguments are +;; specified differently because the . would be parsed incorrectly +;; otherwise. (def (f-no-args) 42) (def (f-one-arg x) x) (def (f-kw-arg #:x x) x) @@ -181,3 +185,4 @@ {(f-rest-args) ≡ 42} {(f-rest-args 1) ≡ 42} {(f-rest-args 1 2 3) ≡ 42}) +