Skip to content

Support matching of multi-dimensional arrays #59

Open
fare opened this Issue Nov 3, 2012 · 3 comments

3 participants

@fare
fare commented Nov 3, 2012

To supersede cl-match, we need to be able to match arrays of arbitrary dimensions.

e.g. an array of rank 3:

(array 3 (((1 2) (3 4)) ((5 6) (6 8))))

same array using explicit dimensions:

(array (2 2 2) (((1 2) (3 4)) ((5 6) (6 8))))

same array using an array as a pattern:

(array #3(((1 2) (3 4)) ((5 6) (6 8))))

Oh, what about checking the specialized array type? Makes things even worse.

(array 2 double-float ((a b) (c d)))
@m2ym m2ym was assigned Nov 9, 2012
@guicho271828

I have the similar idea.

It would be better if the matcher gives the somewhat similar interface to the constructor.

  • all options to make-array except :initial-contents
  • e.g.) type declaration should be specified by :element-type. :adjustable, :fill-pointer and so on

and I am thinking about this:

(array (5 5)
       ((_ _ _ _ _)
        ___________
        a-row
        ___________
        (a _____ b)))
  • a-row is an displaced array
  • in order to get the better graphical representation in the source code, symbols made of any number of underscores have the same effect as _
(array (101 101)
       ((_ (column 99) _)
        (column 49)
        a
        (column 49)
        (_ _ _ _ _)))
  • ability to specify a numbers of ignored columns, rows.
  • should the number accept a execute-time value?
@guicho271828

if it doesn't accept an execute-time value, something like 49 might be a choice.

@guicho271828

__49__

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.