factor/library/test/lists/destructive.factor

35 lines
1.1 KiB
Factor

IN: scratchpad
USE: lists
USE: namespaces
USE: stack
USE: test
[ "a" | "b" ] clone-list "x" set
[ [ 1 | "b" ] ] [ 1 "x" get set-car "x" get ] unit-test
[ "a" | "b" ] clone-list "x" set
[ [ "a" | 2 ] ] [ 2 "x" get set-cdr "x" get ] unit-test
: clone-and-nappend ( list list -- list )
swap clone-list swap clone-list nappend ;
[ [ ] ] [ [ ] [ ] clone-and-nappend ] unit-test
[ [ 1 ] ] [ [ 1 ] [ ] clone-and-nappend ] unit-test
[ [ 2 ] ] [ [ ] [ 2 ] clone-and-nappend ] unit-test
[ [ 1 2 3 4 ] ] [ [ 1 2 3 ] [ 4 ] clone-and-nappend ] unit-test
: clone-and-nreverse ( list -- list )
clone-list nreverse ;
[ [ ] ] [ [ ] clone-and-nreverse ] unit-test
[ [ 1 ] ] [ [ 1 ] clone-and-nreverse ] unit-test
[ [ 3 2 1 ] ] [ [ 1 2 3 ] clone-and-nreverse ] unit-test
[ 1 2 3 ] clone-list "x" set [ 4 5 6 ] clone-list "y" set
[ [ 4 5 6 ] ] [ "x" get "y" get nappend drop "y" get ] unit-test
[ 1 2 3 ] clone-list "x" set [ 4 5 6 ] clone-list "y" set
[ [ 1 2 3 4 5 6 ] ] [ "x" get "y" get ] [ nappend drop "x" get ] test-word