aboutsummaryrefslogtreecommitdiffstats
path: root/utils.hs
diff options
context:
space:
mode:
Diffstat (limited to 'utils.hs')
-rw-r--r--utils.hs18
1 files changed, 18 insertions, 0 deletions
diff --git a/utils.hs b/utils.hs
index 33f3f6e..04211ea 100644
--- a/utils.hs
+++ b/utils.hs
@@ -1,7 +1,25 @@
module Utils where
+import Control.Applicative (ZipList (ZipList, getZipList))
+
(.>) = flip (.)
($>) = flip ($)
infixr 6 $>
+
+splitOn :: (Char -> Bool) -> String -> [String]
+splitOn p s = case dropWhile p s of
+ "" -> []
+ s' -> w : splitOn p s''
+ where
+ (w, s'') = break p s'
+
+transpose :: [[a]] -> [[a]]
+transpose = getZipList . traverse ZipList
+
+mapWithIndex :: (Num a1, Enum a1) => (a2 -> b) -> [a2] -> [(a1, b)]
+mapWithIndex f xs = zip [0 ..] (map f xs)
+
+removeAt :: [Int] -> [b] -> [b]
+removeAt is xs = mapWithIndex id xs $> filter (\(i', _) -> i' `notElem` is) .> map snd