remove math.blas.syntax and merge parsing words into math.blas.vectors/matrices
[factor/jcg.git] / basis / specialized-vectors / functor / functor.factor
blob2410cc284ec1ab88c2f62fbcf3a4f2de910e8e6d
1 ! Copyright (C) 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: functors sequences sequences.private growable
4 prettyprint.custom kernel words classes math parser ;
5 IN: specialized-vectors.functor
7 FUNCTOR: define-vector ( T -- )
9 A   IS      ${T}-array
10 <A> IS      <${A}>
12 V   DEFINES ${T}-vector
13 <V> DEFINES <${V}>
14 >V  DEFINES >${V}
15 V{  DEFINES ${V}{
17 WHERE
19 TUPLE: V { underlying A } { length array-capacity } ;
21 : <V> ( capacity -- vector ) <A> 0 V boa ; inline
23 M: V like
24     drop dup V instance? [
25         dup A instance? [ dup length V boa ] [ >V ] if
26     ] unless ;
28 M: V new-sequence drop [ <A> ] [ >fixnum ] bi V boa ;
30 M: A new-resizable drop <V> ;
32 M: V equal? over V instance? [ sequence= ] [ 2drop f ] if ;
34 : >V ( seq -- vector ) V new clone-like ; inline
36 M: V pprint-delims drop \ V{ \ } ;
38 M: V >pprint-sequence ;
40 M: V pprint* pprint-object ;
42 : V{ \ } [ >V ] parse-literal ; parsing
44 INSTANCE: V growable
46 ;FUNCTOR