Changeset 39485 in project
- Timestamp:
- 01/06/21 17:34:36 (11 days ago)
- Location:
- release/5/dotted-lambdas
- Files:
-
- 6 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
release/5/dotted-lambdas/tags/1.1/dotted-lambdas.egg
r38999 r39485 3 3 ((synopsis "lambda equivalents with dots as trailing symbols") 4 4 (category lang-exts) 5 (version "1. 0")5 (version "1.1") 6 6 (license "BSD") 7 7 (test-dependencies simple-tests) -
release/5/dotted-lambdas/tags/1.1/dotted-lambdas.scm
r38999 r39485 1 ; Copyright (c) 202 0, Juergen Lorenz, ju (at) jugilo (dot) de1 ; Copyright (c) 2021 , Juergen Lorenz, ju (at) jugilo (dot) de 2 2 ; All rights reserved. 3 3 ; … … 36 36 last item is one of the symbols .., ... or .... 37 37 38 The meaning of theses symbols, which are le dal identifiers, is38 The meaning of theses symbols, which are legal identifiers, is 39 39 40 40 * two dots: the argument to the left references a callable list … … 64 64 callable 65 65 lambda* 66 define* 66 67 dotted-lambdas 67 68 ) … … 97 98 The last one evaluates to ordinary (lambda (x ...) xpr . xprs) 98 99 ]|# 99 100 100 (define-syntax lambda* 101 101 (syntax-rules !!! (.. ... ....) … … 113 113 (if (null? xs) 114 114 (error 'lambda* "not enough arguments for ...." xs) 115 (let ((xs ( make-callable xs))) xpr . xprs))))115 (let ((xs (callable xs))) xpr . xprs)))) 116 116 ((_ (x !!!) xpr . xprs) ; without dots: normal lambda 117 117 (lambda (x !!!) xpr . xprs)) … … 119 119 120 120 ; Note, that ... as well as .. and .... are legal Scheme identifiers 121 122 #|[ 123 (define* (name x ... xs ..) xpr . xprs) 124 (define* (name x ... xs ...) xpr . xprs) 125 (define* (name x ... xs ....) xpr . xprs) 126 (define* (name x ...) xpr . xprs) 127 --- macro --- 128 syntactic sugar for, e.g. 129 (define name (lambda* (x ... xs ..) xpr . xprs)) 130 ]|# 131 (define-syntax define* 132 (syntax-rules !!! (.. ... ....) 133 ((_ (name x !!! xs ..) xpr . xprs) 134 (define name (lambda* (x !!! xs ..) xpr . xprs))) 135 ((_ (name x !!! xs ...) xpr . xprs) 136 (define name (lambda* (x !!! xs ...) xpr . xprs))) 137 ((_ (name x !!! xs ....) xpr . xprs) 138 (define name (lambda* (x !!! xs ....) xpr . xprs))) 139 ((_ (name x !!!) xpr . xprs) 140 (define name (lambda* (x !!!) xpr . xprs))) 141 )) 121 142 122 143 #|[ … … 148 169 "The last one evaluates to ordinary (lambda (x ...) xpr . xprs)" 149 170 ) 171 (define 172 macro: 173 (define* (name x ... xs ..) xpr . xprs) 174 (define* (name x ... xs ...) xpr . xprs) 175 (define* (name x ... xs ....) xpr . xprs) 176 (define* (name x ...) xpr . xprs) 177 (define name (lambda* (x ... xs ..) xpr . xprs)) 178 "syntactic sugar for, e.g." 179 ) 150 180 (dotted-lambdas 151 181 procedure: -
release/5/dotted-lambdas/tags/1.1/tests/run.scm
r38999 r39485 1 (import dotted-lambdas) 1 2 2 (import dotted-lambdas simple-tests(chicken condition))3 (import simple-tests (chicken base) (chicken condition)) 3 4 4 5 (define-checks … … 40 41 '()) 41 42 43 (define* (inc x i ..) (+ x (optional (i) 1))) 44 45 (define* (foo x y zs ...) (list x y (zs))) 46 47 (define* (bar x ys ....) (list x (ys))) 48 49 (define* (baz xs ..) (list (xs))) 50 51 (define-checks 52 (defines verbose?) 53 (inc 5) 54 6 55 (inc 5 3) 56 8 57 (foo 1 2 3 4) 58 '(1 2 (3 4)) 59 (foo 1 2) 60 '(1 2 ()) 61 (bar 1 2 3 4) 62 '(1 (2 3 4)) 63 (condition-case (bar 1) ((exn) #f)) 64 #f 65 (baz 1) 66 '((1)) 67 (condition-case (baz 1 2) ((exn) #f)) 68 #f) 69 42 70 (check-all DOTTED-LAMBDAS 43 71 (calls) 44 72 (lambdas) 73 (defines) 45 74 ) -
release/5/dotted-lambdas/trunk/dotted-lambdas.egg
r38999 r39485 3 3 ((synopsis "lambda equivalents with dots as trailing symbols") 4 4 (category lang-exts) 5 (version "1. 0")5 (version "1.1") 6 6 (license "BSD") 7 7 (test-dependencies simple-tests) -
release/5/dotted-lambdas/trunk/dotted-lambdas.scm
r38999 r39485 1 ; Copyright (c) 202 0, Juergen Lorenz, ju (at) jugilo (dot) de1 ; Copyright (c) 2021 , Juergen Lorenz, ju (at) jugilo (dot) de 2 2 ; All rights reserved. 3 3 ; … … 36 36 last item is one of the symbols .., ... or .... 37 37 38 The meaning of theses symbols, which are le dal identifiers, is38 The meaning of theses symbols, which are legal identifiers, is 39 39 40 40 * two dots: the argument to the left references a callable list … … 64 64 callable 65 65 lambda* 66 define* 66 67 dotted-lambdas 67 68 ) … … 97 98 The last one evaluates to ordinary (lambda (x ...) xpr . xprs) 98 99 ]|# 99 100 100 (define-syntax lambda* 101 101 (syntax-rules !!! (.. ... ....) … … 113 113 (if (null? xs) 114 114 (error 'lambda* "not enough arguments for ...." xs) 115 (let ((xs ( make-callable xs))) xpr . xprs))))115 (let ((xs (callable xs))) xpr . xprs)))) 116 116 ((_ (x !!!) xpr . xprs) ; without dots: normal lambda 117 117 (lambda (x !!!) xpr . xprs)) … … 119 119 120 120 ; Note, that ... as well as .. and .... are legal Scheme identifiers 121 122 #|[ 123 (define* (name x ... xs ..) xpr . xprs) 124 (define* (name x ... xs ...) xpr . xprs) 125 (define* (name x ... xs ....) xpr . xprs) 126 (define* (name x ...) xpr . xprs) 127 --- macro --- 128 syntactic sugar for, e.g. 129 (define name (lambda* (x ... xs ..) xpr . xprs)) 130 ]|# 131 (define-syntax define* 132 (syntax-rules !!! (.. ... ....) 133 ((_ (name x !!! xs ..) xpr . xprs) 134 (define name (lambda* (x !!! xs ..) xpr . xprs))) 135 ((_ (name x !!! xs ...) xpr . xprs) 136 (define name (lambda* (x !!! xs ...) xpr . xprs))) 137 ((_ (name x !!! xs ....) xpr . xprs) 138 (define name (lambda* (x !!! xs ....) xpr . xprs))) 139 ((_ (name x !!!) xpr . xprs) 140 (define name (lambda* (x !!!) xpr . xprs))) 141 )) 121 142 122 143 #|[ … … 148 169 "The last one evaluates to ordinary (lambda (x ...) xpr . xprs)" 149 170 ) 171 (define 172 macro: 173 (define* (name x ... xs ..) xpr . xprs) 174 (define* (name x ... xs ...) xpr . xprs) 175 (define* (name x ... xs ....) xpr . xprs) 176 (define* (name x ...) xpr . xprs) 177 (define name (lambda* (x ... xs ..) xpr . xprs)) 178 "syntactic sugar for, e.g." 179 ) 150 180 (dotted-lambdas 151 181 procedure: -
release/5/dotted-lambdas/trunk/tests/run.scm
r38999 r39485 1 (import dotted-lambdas) 1 2 2 (import dotted-lambdas simple-tests(chicken condition))3 (import simple-tests (chicken base) (chicken condition)) 3 4 4 5 (define-checks … … 40 41 '()) 41 42 43 (define* (inc x i ..) (+ x (optional (i) 1))) 44 45 (define* (foo x y zs ...) (list x y (zs))) 46 47 (define* (bar x ys ....) (list x (ys))) 48 49 (define* (baz xs ..) (list (xs))) 50 51 (define-checks 52 (defines verbose?) 53 (inc 5) 54 6 55 (inc 5 3) 56 8 57 (foo 1 2 3 4) 58 '(1 2 (3 4)) 59 (foo 1 2) 60 '(1 2 ()) 61 (bar 1 2 3 4) 62 '(1 (2 3 4)) 63 (condition-case (bar 1) ((exn) #f)) 64 #f 65 (baz 1) 66 '((1)) 67 (condition-case (baz 1 2) ((exn) #f)) 68 #f) 69 42 70 (check-all DOTTED-LAMBDAS 43 71 (calls) 44 72 (lambdas) 73 (defines) 45 74 )
Note: See TracChangeset
for help on using the changeset viewer.