From 5402162df517499097194b08e063dde0eaf33b8d Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Thu, 27 Nov 2008 21:07:50 -0600 Subject: [PATCH] Add mnswap macro --- basis/generalizations/generalizations-tests.factor | 4 ++++ basis/generalizations/generalizations.factor | 3 +++ 2 files changed, 7 insertions(+) diff --git a/basis/generalizations/generalizations-tests.factor b/basis/generalizations/generalizations-tests.factor index 1ebe528f35..1291012700 100644 --- a/basis/generalizations/generalizations-tests.factor +++ b/basis/generalizations/generalizations-tests.factor @@ -38,3 +38,7 @@ IN: generalizations.tests [ "a" ] [ { "a" } 1 firstn ] unit-test [ [ 1 2 ] ] [ 1 2 2 [ ] nsequence ] unit-test + +[ 4 5 1 2 3 ] [ 1 2 3 4 5 2 3 mnswap ] unit-test + +[ 1 2 3 4 5 6 ] [ 1 2 3 4 5 6 2 4 mnswap 4 2 mnswap ] unit-test diff --git a/basis/generalizations/generalizations.factor b/basis/generalizations/generalizations.factor index 490fa77204..b8d8db019c 100644 --- a/basis/generalizations/generalizations.factor +++ b/basis/generalizations/generalizations.factor @@ -73,3 +73,6 @@ MACRO: napply ( n -- ) 2 [a,b] [ [ 1- ] [ ] bi '[ _ ntuck _ nslip ] ] map concat >quotation [ call ] append ; + +MACRO: mnswap ( m n -- ) + 1+ '[ _ -nrot ] spread>quot ;