diff --git a/extra/sequences/lib/lib-docs.factor b/extra/sequences/lib/lib-docs.factor index e279230b1b..c155bb47ec 100755 --- a/extra/sequences/lib/lib-docs.factor +++ b/extra/sequences/lib/lib-docs.factor @@ -27,3 +27,14 @@ HELP: enumerate { $values { "seq" sequence } { "seq'" sequence } } { $description "Returns a new sequence where each element is an array of { index, value }" } ; +HELP: switch +{ $values { "x" number } { "y" number } { "seq" sequence } } +{ $description "Swaps the values between indices 'x' and 'y' in the sequence." } +{ $examples + { $example + "USING: sequences.lib ;" + "1 2 \"asdf\" [ switch ] keep" + "\"adsf\"" } +} ; + + diff --git a/extra/sequences/lib/lib.factor b/extra/sequences/lib/lib.factor index fe9d9bb587..c23457a332 100755 --- a/extra/sequences/lib/lib.factor +++ b/extra/sequences/lib/lib.factor @@ -173,3 +173,8 @@ USE: random : enumerate ( seq -- seq' ) >alist ; +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +: switch ( x y seq -- ) + 3dup swap [ nth ] dip [ [ move ] keep ] 2dip rot set-nth ; +