summaryrefslogtreecommitdiff
path: root/scheme
diff options
context:
space:
mode:
authormichele.simionato <devnull@localhost>2009-04-14 14:52:53 +0000
committermichele.simionato <devnull@localhost>2009-04-14 14:52:53 +0000
commit5fc3eccc11eed608a52d8e2b0f9a85cc3d0ee472 (patch)
treeed154f73df1e1cc477abc2b27ecfb5863e644fec /scheme
parentbb57bc47ab269def8814567c747b6484308849d5 (diff)
downloadmicheles-5fc3eccc11eed608a52d8e2b0f9a85cc3d0ee472.tar.gz
First version of record-syntax
Diffstat (limited to 'scheme')
-rw-r--r--scheme/aps/record-syntax.sls11
1 files changed, 11 insertions, 0 deletions
diff --git a/scheme/aps/record-syntax.sls b/scheme/aps/record-syntax.sls
new file mode 100644
index 0000000..fa7612d
--- /dev/null
+++ b/scheme/aps/record-syntax.sls
@@ -0,0 +1,11 @@
+#!r6rs
+(library (aps record-syntax)
+(export record-syntax)
+(import (rnrs) (for (rnrs) (meta -1))
+ (sweet-macros) (for (only (aps list-utils) range) expand run))
+
+(def-syntax (record-syntax field-name ...)
+ (with-syntax (((i ...) (range (length #'(field-name ...)))))
+ #'(syntax-match (field-name ...)
+ (sub (ctx v field-name) #'(vector-ref v i)) ...)))
+)