summaryrefslogtreecommitdiff
path: root/compiler/utils/Util.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/utils/Util.hs')
-rw-r--r--compiler/utils/Util.hs15
1 files changed, 10 insertions, 5 deletions
diff --git a/compiler/utils/Util.hs b/compiler/utils/Util.hs
index 51812cca75..d6cea5ca8d 100644
--- a/compiler/utils/Util.hs
+++ b/compiler/utils/Util.hs
@@ -14,6 +14,9 @@ module Util (
ghciTablesNextToCode,
isWindowsHost, isDarwinHost,
+ -- * Miscellaneous higher-order functions
+ applyWhen, nTimes,
+
-- * General list processing
zipEqual, zipWithEqual, zipWith3Equal, zipWith4Equal,
zipLazy, stretchZipWith, zipWithAndUnzip, zipAndUnzip,
@@ -57,9 +60,6 @@ module Util (
takeList, dropList, splitAtList, split,
dropTail, capitalise,
- -- * For loop
- nTimes,
-
-- * Sorting
sortWith, minWith, nubSort, ordNub,
@@ -222,12 +222,17 @@ isDarwinHost = False
{-
************************************************************************
* *
-\subsection{A for loop}
+\subsection{Miscellaneous higher-order functions}
* *
************************************************************************
-}
--- | Compose a function with itself n times. (nth rather than twice)
+-- | Apply a function iff some condition is met.
+applyWhen :: Bool -> (a -> a) -> a -> a
+applyWhen True f x = f x
+applyWhen _ _ x = x
+
+-- | A for loop: Compose a function with itself n times. (nth rather than twice)
nTimes :: Int -> (a -> a) -> (a -> a)
nTimes 0 _ = id
nTimes 1 f = f