@@ -0,0 +1,7 @@
+import Data.List
+
+sweep f l stack = case stack of
+ [] -> []
+ cur:substack -> concat [map (\l -> cur:l) (f (delete cur l)), sweep f l substack]
+ana l = sweep ana l l