Alex, > > * missing struct/records support? I think we should specify it, > > and let implementations decide on its efficient representation > > These are actually commented out in the source. The upstream > chibi-scheme version has support for matching SRFI-99 records.
Should I look here? http://code.google.com/p/chibi-scheme/source/browse/lib/chibi/match/match.scm?r=e29de01c617da072a938de874d2272558ebe2746 > > > * at some point, it does vector->list for matching inside > > quasiquote. Isn't it a bit inefficient? > > Vectors in general are rare to match against - a lot of matching > libraries use that trick for matching even outside of quasiquote. Not in numeric/linear algebra code. But I agree, its a neat trick, which I have also used at some point to get pattern matching to work using pure R5RS syntax-rules matcher ;-) But I have since abandoned this idea as matching for particular values at large (but bounded offsets) inside vectors is then very inefficient. > It's easy enough to optimize if you feel the extra code is worth > it. Agreed. > > > * are nested ellipses supported? Looks like they are quite > > useful... > > Please read the comment in the source regarding this - they are > intentionally disabled. Couldn't find it in the sources... Any hints? > > Nested tree patterns aren't disabled, though, > > > * (? predicate) matching is a bit ugly when you use (? number?). > > Reminds me of Bigloo/Queinnec's matcher > > Alternate syntax suggestions are welcome. Actually, I would like to propose ________________________________________________________________________ (predicate? : accessor1 = pattern : accessor2 = pattern ...) ________________________________________________________________________ where accessorN can be something like a lambda abstraction (lambda (x) x) or (fun args ...) returning a singular function expecting matched data. Predicate? can be any singular function returning boolean. So, the dispatch is this case is better on the second form (:), rather than the first (?)... > > > * where are guards? > > You can combine predicates and/or use the failure continuation. Isn't this too verbose? Don't we want to abbreviate (this very common case) in a manner already pretty much accepted by ML, Haskell, Scala and R6RS compile-time pattern-matcher? > > > * matching numbers: we need to use (=) to match them, not equal? > > (or eqv? and eq?) > > Do we? :) > Typing. A good example: 42+0.0 should match both 42.0 and 42. And then lets have n+k patterns;-) Pjotr Kourzanov _______________________________________________ r6rs-discuss mailing list r6rs-discuss@lists.r6rs.org http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss