]> gitweb.factorcode.org Git - factor.git/blob - core/vectors/vectors.factor
4a6b41f863a74566b3f5c41d248afa09b5afda28
[factor.git] / core / vectors / vectors.factor
1 ! Copyright (C) 2004, 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: arrays kernel math sequences sequences.private growable ;
4 IN: vectors
5
6 <PRIVATE
7
8 : array>vector ( array length -- vector )
9     vector boa ; inline
10
11 PRIVATE>
12
13 : <vector> ( n -- vector ) f <array> 0 array>vector ; inline
14
15 : >vector ( seq -- vector ) V{ } clone-like ;
16
17 M: vector like
18     drop dup vector? [
19         dup array? [ dup length array>vector ] [ >vector ] if
20     ] unless ;
21
22 M: vector new-sequence drop [ f <array> ] keep >fixnum array>vector ;
23
24 M: vector equal?
25     over vector? [ sequence= ] [ 2drop f ] if ;
26
27 M: sequence new-resizable drop <vector> ;
28
29 INSTANCE: vector growable
30
31 : 1vector ( x -- vector ) 1array >vector ;
32
33 : ?push ( elt seq/f -- seq )
34     [ 1 <vector> ] unless* [ push ] keep ;