summaryrefslogtreecommitdiff
path: root/scheme
diff options
context:
space:
mode:
authormichele.simionato <devnull@localhost>2009-03-09 06:19:38 +0000
committermichele.simionato <devnull@localhost>2009-03-09 06:19:38 +0000
commit1e0b572b2f9b908d105789164d9c310df305727e (patch)
tree91553a36af2f12ba016f78e12267767536456734 /scheme
parent5bb2ad8d651d52adaf2723df2e30cd68e39d92e5 (diff)
downloadmicheles-1e0b572b2f9b908d105789164d9c310df305727e.tar.gz
Various additions/fixes
Diffstat (limited to 'scheme')
-rw-r--r--scheme/aps/lang.sls19
-rw-r--r--scheme/aps/list-utils.sls22
2 files changed, 39 insertions, 2 deletions
diff --git a/scheme/aps/lang.sls b/scheme/aps/lang.sls
new file mode 100644
index 0000000..e76ba1e
--- /dev/null
+++ b/scheme/aps/lang.sls
@@ -0,0 +1,19 @@
+#!r6rs
+(library (aps lang)
+(export :)
+(import (rnrs) (sweet-macros))
+
+;;COLONS
+(def-syntax :
+ (syntax-match ()
+ (sub (: let-form e)
+ #'e)
+ (sub (: let-form e1 e2)
+ (syntax-violation ': "Odd number of arguments" #'(let-form e1 e2)))
+ (sub (: let-form patt value rest ... expr)
+ #'(let-form ((patt value)) (: let-form rest ... expr))
+ (identifier? #'let-form)
+ (syntax-violation ': "Not an identifier" #'let-form))
+ ))
+;;END
+)
diff --git a/scheme/aps/list-utils.sls b/scheme/aps/list-utils.sls
index aad0aea..95a479a 100644
--- a/scheme/aps/list-utils.sls
+++ b/scheme/aps/list-utils.sls
@@ -1,7 +1,7 @@
#!r6rs
(library (aps list-utils)
-(export range enumerate zip transpose distinct? let+ perm list-of-aux
- remove-dupl append-unique fold flatten list-of)
+(export range enumerate zip transpose distinct? let+ perm list-of-aux list-for
+ remove-dupl append-unique fold flatten list-of normalize)
(import (rnrs) (sweet-macros) (aps cut))
;;; macros
@@ -55,6 +55,9 @@
;;END
+(def-syntax (list-for decl ... expr)
+ #'(list-of-aux expr '() decl ...))
+
;;; utilities
;;RANGE
@@ -155,4 +158,19 @@
(el in lst)
(ls in (perm eq? (remp (cut eq? el <>) lst)))))))
;;END
+
+
+
+
+
+
+
+
+;;NORMALIZE
+(define (normalize ls)
+ (list-of (syntax-match a ()
+ (sub n #'(n n) (identifier? #'n))
+ (sub (n v) #'(n v) (identifier? #'n)))
+ (a in ls)))
+;;END
)