summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeil Mitchell <none>2007-05-24 01:32:12 +0200
committerNeil Mitchell <none>2007-05-24 01:32:12 +0200
commit0a959ad3791768e8de4be98b3f3e0f2e07ea2d25 (patch)
treef0ad4dd3a3387b678eee60a11514bebb8ffde5e4
parent772005a32b40b5440b4e389a9521771c3075ad95 (diff)
downloadmetatile-0a959ad3791768e8de4be98b3f3e0f2e07ea2d25.tar
metatile-0a959ad3791768e8de4be98b3f3e0f2e07ea2d25.zip
Add an abort function, called for deliberate and intentional errors
darcs-hash:20070523233212-73ab9-81ab782d6360e1d85152c647f9c7cd19a065963a
-rw-r--r--StackSet.hs8
1 files changed, 6 insertions, 2 deletions
diff --git a/StackSet.hs b/StackSet.hs
index b00c67e..68d56e8 100644
--- a/StackSet.hs
+++ b/StackSet.hs
@@ -146,6 +146,10 @@ data Stack a = Empty
, right :: [a] } -- jokers to the right
deriving (Show, Read, Eq)
+
+-- this function indicates to catch that an error is expected
+abort x = error x
+
-- ---------------------------------------------------------------------
-- Construction
@@ -157,7 +161,7 @@ data Stack a = Empty
--
new :: (Integral i, Integral s) => i -> s -> StackSet i a s
new n m | n > 0 && m > 0 = StackSet n cur visi unseen
- | otherwise = error "non-positive arguments to StackSet.new"
+ | otherwise = abort "non-positive arguments to StackSet.new"
where (seen,unseen) = L.genericSplitAt m $ Workspace 0 Empty : [ Workspace i Empty | i <- [1 ..n-1]]
(cur:visi) = [ Screen i s | (i,s) <- zip seen [0..] ]
@@ -187,7 +191,7 @@ view i s
= s { current = Screen x (screen (current s))
, hidden = workspace (current s) : L.delete x (hidden s) }
- | otherwise = error "Inconsistent StackSet: workspace not found"
+ | otherwise = abort "Inconsistent StackSet: workspace not found"
-- 'Catch'ing this might be hard. Relies on monotonically increasing
-- workspace tags defined in 'new'