diff --git a/core/byte-arrays/byte-arrays-tests.factor b/core/byte-arrays/byte-arrays-tests.factor index edaea108a1..1c3e4d3bdf 100644 --- a/core/byte-arrays/byte-arrays-tests.factor +++ b/core/byte-arrays/byte-arrays-tests.factor @@ -9,3 +9,5 @@ USING: tools.test byte-arrays sequences kernel ; [ B{ 1 2 } ] [ 2 B{ 1 2 3 4 5 6 7 8 9 } resize-byte-array ] unit-test [ -10 B{ } resize-byte-array ] must-fail + +[ B{ 123 } ] [ 123 1byte-array ] unit-test \ No newline at end of file diff --git a/core/byte-arrays/byte-arrays.factor b/core/byte-arrays/byte-arrays.factor index f0d188ce4a..72989ac447 100644 --- a/core/byte-arrays/byte-arrays.factor +++ b/core/byte-arrays/byte-arrays.factor @@ -1,4 +1,4 @@ -! Copyright (C) 2007, 2008 Slava Pestov. +! Copyright (C) 2007, 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: accessors kernel kernel.private alien.accessors sequences sequences.private math ; @@ -19,7 +19,7 @@ M: byte-array resize INSTANCE: byte-array sequence -: 1byte-array ( x -- byte-array ) 1 [ set-first ] keep ; inline +: 1byte-array ( x -- byte-array ) B{ } 1sequence ; inline : 2byte-array ( x y -- byte-array ) B{ } 2sequence ; inline diff --git a/core/sequences/sequences-docs.factor b/core/sequences/sequences-docs.factor index f213be4fe7..6ca782a202 100755 --- a/core/sequences/sequences-docs.factor +++ b/core/sequences/sequences-docs.factor @@ -207,6 +207,10 @@ HELP: first4-unsafe { $values { "seq" sequence } { "first" "the first element" } { "second" "the second element" } { "third" "the third element" } { "fourth" "the fourth element" } } { $contract "Unsafe variant of " { $link first4 } " that does not perform bounds checks." } ; +HELP: 1sequence +{ $values { "obj" object } { "exemplar" sequence } { "seq" sequence } } +{ $description "Creates a one-element sequence of the same type as " { $snippet "exemplar" } "." } ; + HELP: 2sequence { $values { "obj1" object } { "obj2" object } { "exemplar" sequence } { "seq" sequence } } { $description "Creates a two-element sequence of the same type as " { $snippet "exemplar" } "." } ; diff --git a/core/sequences/sequences.factor b/core/sequences/sequences.factor index 2c30a62fe3..9e64cfa536 100755 --- a/core/sequences/sequences.factor +++ b/core/sequences/sequences.factor @@ -137,9 +137,12 @@ INSTANCE: iota immutable-sequence : from-end ( seq n -- seq n' ) [ dup length ] dip - ; inline +: (1sequence) ( obj seq -- seq ) + [ 0 swap set-nth-unsafe ] keep ; inline + : (2sequence) ( obj1 obj2 seq -- seq ) [ 1 swap set-nth-unsafe ] keep - [ 0 swap set-nth-unsafe ] keep ; inline + (1sequence) ; inline : (3sequence) ( obj1 obj2 obj3 seq -- seq ) [ 2 swap set-nth-unsafe ] keep @@ -151,6 +154,9 @@ INSTANCE: iota immutable-sequence PRIVATE> +: 1sequence ( obj exemplar -- seq ) + 1 swap [ (1sequence) ] new-like ; inline + : 2sequence ( obj1 obj2 exemplar -- seq ) 2 swap [ (2sequence) ] new-like ; inline diff --git a/core/vectors/vectors-tests.factor b/core/vectors/vectors-tests.factor index f2e29d79e8..12e2ea49f7 100644 --- a/core/vectors/vectors-tests.factor +++ b/core/vectors/vectors-tests.factor @@ -97,3 +97,5 @@ IN: vectors.tests [ fixnum ] [ 1 >bignum V{ } new-sequence length class ] unit-test [ fixnum ] [ 1 >bignum [ ] V{ } map-as length class ] unit-test + +[ V{ "lulz" } ] [ "lulz" 1vector ] unit-test \ No newline at end of file diff --git a/core/vectors/vectors.factor b/core/vectors/vectors.factor index a6bfef71d0..1bdda7b69d 100644 --- a/core/vectors/vectors.factor +++ b/core/vectors/vectors.factor @@ -40,7 +40,7 @@ M: sequence new-resizable drop ; INSTANCE: vector growable -: 1vector ( x -- vector ) 1array >vector ; +: 1vector ( x -- vector ) V{ } 1sequence ; : ?push ( elt seq/f -- seq ) [ 1 ] unless* [ push ] keep ;