13 | isOdd (S k) = not (isOdd k)
16 | isEven : Nat -> Bool
17 | isEven k = not $
isOdd k
20 | mapChunks : (a -> Either e b) -> (k, a) -> Either e (k, b)
21 | mapChunks f (k, a) = Right (k, !(f a))
24 | mapListEither : List a -> (a -> Either e b) -> Either e (List b)
25 | mapListEither [] f = Right []
26 | mapListEither (x :: xs) f =
27 | do rest <- mapListEither xs f
32 | mapRecord : (a -> Either e b) -> (k, a) -> Either e (k, b)
33 | mapRecord f (k, x) = Right (k, !(f x))
36 | mapUnion : (a -> Either e b) -> (k, Maybe a) -> Either e (k, (Maybe b))
37 | mapUnion f (k, Just x) =
38 | Right (k, Just !(f x))
39 | mapUnion f (k, Nothing) = Right (k, Nothing)
42 | mapMaybe : (a -> Either e b) -> Maybe a -> Either e (Maybe b)
43 | mapMaybe f (Just x) =
45 | mapMaybe f Nothing = Right Nothing
48 | mergeWithApp : (Monad m, Ord k) =>
53 | mergeWithApp f xs ys = sequence (mergeWith (\x,y => (f <$> x <*> y) >>= id) (map pure xs) (map pure ys))
56 | mergeWithApp' : (Monad m, Ord k) =>
61 | mergeWithApp' f xs ys = sequence (mergeWith (\x,y => y) (map pure xs) (map pure ys))
63 | replace : Eq a => (needle : List a) -> (replacement : List a) -> (haystack : List a) -> List a
64 | replace needle replacement haystack = go 0 [] needle haystack
66 | go : (pass : Nat) ->
68 | (needle : List a) ->
69 | (haystack : List a) -> List a
70 | go _ acc (x :: xs) [] = acc
71 | go _ acc [] haystack = haystack
72 | go (S k) acc needle (y :: haystack) =
73 | go k acc needle haystack
74 | go Z acc needle@(x :: xs) h@(y :: haystack) =
75 | case isPrefixOf needle h of
76 | False => go 0 (acc ++ [y]) needle haystack
77 | True => go (length xs) (acc ++ replacement) needle haystack
80 | textReplace : (needle : String) -> (replacement : String) -> (haystack : String) -> String
81 | textReplace needle replacement haystack = pack $
replace (unpack needle) (unpack replacement) (unpack haystack)