Fixing insufficient safety in flip and M: column virtual@
parent
34e29cd690
commit
c726962a7a
|
@ -221,7 +221,8 @@ TUPLE: column seq col ;
|
||||||
C: <column> column
|
C: <column> column
|
||||||
|
|
||||||
M: column virtual-seq column-seq ;
|
M: column virtual-seq column-seq ;
|
||||||
M: column virtual@ dup column-col -rot column-seq nth ;
|
M: column virtual@
|
||||||
|
dup column-col -rot column-seq nth bounds-check ;
|
||||||
M: column length column-seq length ;
|
M: column length column-seq length ;
|
||||||
|
|
||||||
INSTANCE: column virtual-sequence
|
INSTANCE: column virtual-sequence
|
||||||
|
@ -546,11 +547,6 @@ M: sequence <=>
|
||||||
|
|
||||||
: all-eq? ( seq -- ? ) [ eq? ] monotonic? ;
|
: all-eq? ( seq -- ? ) [ eq? ] monotonic? ;
|
||||||
|
|
||||||
: flip ( matrix -- newmatrix )
|
|
||||||
dup empty? [
|
|
||||||
dup first length [ <column> dup like ] curry* map
|
|
||||||
] unless ;
|
|
||||||
|
|
||||||
: exchange ( m n seq -- )
|
: exchange ( m n seq -- )
|
||||||
pick over bounds-check 2drop 2dup bounds-check 2drop
|
pick over bounds-check 2drop 2dup bounds-check 2drop
|
||||||
exchange-unsafe ;
|
exchange-unsafe ;
|
||||||
|
@ -667,6 +663,12 @@ PRIVATE>
|
||||||
: infimum ( seq -- n ) dup first [ min ] reduce ;
|
: infimum ( seq -- n ) dup first [ min ] reduce ;
|
||||||
: supremum ( seq -- n ) dup first [ max ] reduce ;
|
: supremum ( seq -- n ) dup first [ max ] reduce ;
|
||||||
|
|
||||||
|
: flip ( matrix -- newmatrix )
|
||||||
|
dup empty? [
|
||||||
|
dup [ length ] map infimum
|
||||||
|
[ <column> dup like ] curry* map
|
||||||
|
] unless ;
|
||||||
|
|
||||||
: sequence-hashcode ( n seq -- x )
|
: sequence-hashcode ( n seq -- x )
|
||||||
0 -rot [
|
0 -rot [
|
||||||
hashcode* >fixnum swap 31 fixnum*fast fixnum+fast
|
hashcode* >fixnum swap 31 fixnum*fast fixnum+fast
|
||||||
|
|
Loading…
Reference in New Issue