module Foreign.Java.Util (
tr, ($>), (<$), breakLast, trace, debug
) where
import qualified Debug.Trace as Debug
tr :: Eq a => a -> a -> [a] -> [a]
tr a b (x:xs)
| a == x = b : tr a b xs
| otherwise = x : tr a b xs
tr _ _ [] = []
($>) :: Functor f => f a -> (a -> b) -> f b
($>) = flip fmap
(<$) :: Functor f => (a -> b) -> f a -> f b
(<$) = fmap
breakLast :: [a] -> ([a], a)
breakLast [a] = ([], a)
breakLast (a:as) =
let (init', last') = breakLast as
in (a:init', last')
breakLast _ = error "Foreign.Java.Util.breakLast: empty list"
trace :: Show a => a -> a
trace a = Debug.trace (show a) a
debug :: Show b => b -> a -> a
debug b a = Debug.trace (show b) a