]> gitweb.factorcode.org Git - factor.git/commitdiff
sequences: make sum-lengths generic.
authorJohn Benediktsson <mrjbq7@gmail.com>
Mon, 2 Jun 2014 15:40:38 +0000 (08:40 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Mon, 2 Jun 2014 15:40:38 +0000 (08:40 -0700)
core/sequences/sequences.factor

index 3c5c8f992b632b25f535cb79bb63df8c9cde8097..f27444df3f9b0f058f493cd8806a87c4cb7b0ca9 100644 (file)
@@ -819,9 +819,14 @@ PRIVATE>
         [ 0 swap copy-unsafe ] keep reverse!
     ] keep like ;
 
-: sum-lengths ( seq -- n )
+GENERIC: sum-lengths ( seq -- n )
+
+M: object sum-lengths
     0 [ length + ] reduce ;
 
+M: repetition sum-lengths
+    [ len>> ] [ elt>> length ] bi * ;
+
 : concat-as ( seq exemplar -- newseq )
     swap [ { } ] [
         [ sum-lengths over new-resizable ] keep