diff options
-rw-r--r-- | StackSet.hs | 9 |
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 |