Stefan Israelsson Tampe <stefan.ita...@gmail.com> writes: > On Sun, Apr 28, 2013 at 2:51 PM, Mark H Weaver <m...@netris.org> wrote: > > Panicz Maciej Godek <godek.mac...@gmail.com> writes: > > > (match #u8(1 2 3) > > (#u8(a b c) > > (list a b c))) > > This can't work because a uniform numeric vector cannot hold > symbols, so > #u8(a b c) cannot be represented in the source code. > > please note a b c binds to values and is not symbols as in the pmatch > matcher or match quasiquoute > patterns. So with the right binder this could work.
Read what I wrote again: "#u8(a b c) cannot be represented in the *source* code." Remember that in Scheme (and Lisp), code is represented as data. So what datum do you expect 'read' to return after it consumes "#u8(a b c)"? We could extend (ice-9 match) to support uniform numeric vectors, but the pattern syntax would have to be different. > If you want generic accessors, I guess the array accessors are > what you > want. Patches to extend the pattern matcher to handle arrays are > welcome :) > > Actually for ice-9 match we would like the upstream version to > implement these concepts > Try ask foof on irc #scheme if he accept a patch to implement this in > a portable way or ask > him if he thinks he could spend time on it! Given that Guile's arrays are specific to Guile and not portable, I doubt that foof would be interested in supporting them upstream. > Only if we could accept a slow implementation of the matcher we can > implement a general vector > matcher by patching vector-ref etc. Beyond the efficiency considerations, I'm not sure it's desirable for the pattern #(a b c) to match #u8(1 2 3). Mark