summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--StackSet.hs9
1 files changed, 8 insertions, 1 deletions
diff --git a/StackSet.hs b/StackSet.hs
index 7374da3..1f6db7e 100644
--- a/StackSet.hs
+++ b/StackSet.hs
@@ -76,7 +76,7 @@
--
module StackSet (
StackSet(..), Workspace(..), Screen(..), Stack(..), RationalRect(..),
- new, view, lookupWorkspace, peek, index, focusUp, focusDown,
+ new, view, lookupWorkspace, peek, index, integrate, focusUp, focusDown,
focusWindow, member, findIndex, insertUp, delete, shift,
swapMaster, swapUp, swapDown, modify, float, sink -- needed by users
) where
@@ -244,6 +244,13 @@ peek :: StackSet i a s -> Maybe a
peek = with Nothing (return . focus)
--
+-- /O(n)/. Flatten a Stack into a list.
+--
+integrate :: Stack a -> [a]
+integrate Empty = []
+integrate (Node x l r) = reverse l ++ x : r
+
+--
-- /O(s)/. Extract the stack on the current workspace, as a list.
-- The order of the stack is determined by the master window -- it will be
-- the head of the list. The implementation is given by the natural