-- | The standard factorial function. See
-- <http://www.willamette.edu/~fruehr/haskell/evolution.html> for
-- possible improvements.
+--
+-- Examples:
+--
+-- >>> factorial 0
+-- 1
+--
+-- >>> factorial 4
+-- 24
+--
factorial :: Int -> Int
factorial n
| n <= 1 = 1
-- one-dimensional one.
flatten :: [[[a]]] -> [a]
flatten xs = concat $ concat xs
+
+
+-- | Takes a list, and returns True if its elements are pairwise
+-- equal. Returns False otherwise.
+all_equal :: (Eq a) => [a] -> Bool
+all_equal xs =
+ all (== first_element) other_elements
+ where
+ first_element = head xs
+ other_elements = tail xs