diff options
author | michele.simionato <devnull@localhost> | 2009-03-09 06:19:38 +0000 |
---|---|---|
committer | michele.simionato <devnull@localhost> | 2009-03-09 06:19:38 +0000 |
commit | 1e0b572b2f9b908d105789164d9c310df305727e (patch) | |
tree | 91553a36af2f12ba016f78e12267767536456734 /scheme | |
parent | 5bb2ad8d651d52adaf2723df2e30cd68e39d92e5 (diff) | |
download | micheles-1e0b572b2f9b908d105789164d9c310df305727e.tar.gz |
Various additions/fixes
Diffstat (limited to 'scheme')
-rw-r--r-- | scheme/aps/lang.sls | 19 | ||||
-rw-r--r-- | scheme/aps/list-utils.sls | 22 |
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 ) |