summaryrefslogtreecommitdiffstats
path: root/StackSet.hs
diff options
context:
space:
mode:
authorSpencer Janssen <sjanssen@cse.unl.edu>2007-06-04 08:25:01 +0200
committerSpencer Janssen <sjanssen@cse.unl.edu>2007-06-04 08:25:01 +0200
commit955ca52cb22e386c8d1462c3fb5e88d089da86c2 (patch)
treeee168aa441c7228b58a5b34cb3cb9f7b13f718bb /StackSet.hs
parentaf1e887f1877cc8d8e4a02d4d3132689a28528dc (diff)
downloadmetatile-955ca52cb22e386c8d1462c3fb5e88d089da86c2.tar
metatile-955ca52cb22e386c8d1462c3fb5e88d089da86c2.zip
Add integrate
darcs-hash:20070604062501-a5988-52b9c72b3f989ac55438677442db48d0cf5d06e7
Diffstat (limited to 'StackSet.hs')
-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