Add integrate

This commit is contained in:
Spencer Janssen
2007-06-04 06:25:01 +00:00
parent 77da6e4c72
commit cad36baa19

View File

@@ -76,7 +76,7 @@
-- --
module StackSet ( module StackSet (
StackSet(..), Workspace(..), Screen(..), Stack(..), RationalRect(..), 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, focusWindow, member, findIndex, insertUp, delete, shift,
swapMaster, swapUp, swapDown, modify, float, sink -- needed by users swapMaster, swapUp, swapDown, modify, float, sink -- needed by users
) where ) where
@@ -243,6 +243,13 @@ modify d f s = s { current = (current s)
peek :: StackSet i a s -> Maybe a peek :: StackSet i a s -> Maybe a
peek = with Nothing (return . focus) 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. -- /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 order of the stack is determined by the master window -- it will be