]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/tensors/tensor-slice/tensor-slice.factor
factor: trim using lists
[factor.git] / extra / tensors / tensor-slice / tensor-slice.factor
index 47124bf768fa732d32301a94346b5d70ba66cd19..a4f8ec50539e42ed02c25ef703bc958b1f922ec8 100644 (file)
@@ -1,7 +1,12 @@
-USING: accessors kernel locals math math.order sequences ;
+USING: accessors kernel math math.order sequences ;
 IN: tensors.tensor-slice
 
-TUPLE: step-slice < slice { step integer read-only } ;
+TUPLE: step-slice
+    { from integer read-only initial: 0 }
+    { to integer read-only initial: 0 }
+    { seq read-only }
+    { step integer read-only } ;
+
 :: <step-slice> ( from to step seq -- step-slice )
     step zero? [ "can't be zero" throw ] when
     seq length :> len
@@ -17,10 +22,14 @@ TUPLE: step-slice < slice { step integer read-only } ;
     seq dup slice? [ collapse-slice ] when
     step step-slice boa ;
 
+M: step-slice virtual-exemplar seq>> ; inline
+
 M: step-slice virtual@
-    [ step>> * ] [ from>> + ] [ seq>> ] tri ;
+    [ step>> * ] [ from>> + ] [ seq>> ] tri ; inline
 
 M: step-slice length
     [ to>> ] [ from>> - ] [ step>> ] tri
     dup 0 < [ [ neg 0 max ] dip neg ] when /mod
-    zero? [ 1 + ] unless ;
\ No newline at end of file
+    zero? [ 1 + ] unless ; inline
+
+INSTANCE: step-slice virtual-sequence