module General (foldlPair , openpair , openpair21 , openpair22 , wrppair , wrppair21 , wrppair22 , listRandomSelect) where import System.Random foldlPair :: (a -> b -> c -> a) -> a -> [(b , c)] -> a foldlPair f y xs = foldl (wrppair22 f ) y xs openpair :: ((a , b) -> c) -> a -> b -> c openpair f x y = f (x , y) openpair22 :: (a -> (b , c) -> d) -> a -> b -> c -> d openpair22 f x y z = f x (y , z) openpair21 :: ((b , c) -> a -> d) -> b -> c -> a -> d openpair21 f x y z = f (x , y) z wrppair :: (a -> b -> c) -> (a , b) -> c wrppair f (x , y) = f x y wrppair21 :: (a -> b -> c -> d) -> (a , b) -> c -> d wrppair21 f (x , y) z= f x y z wrppair22 :: (a -> b -> c -> d) -> a -> (b , c) -> d wrppair22 f z (x , y) = f z x y listRandomSelect :: StdGen -> [a] -> (a , StdGen) listRandomSelect rgen xs = let rand = randomR (0 , ((length xs) - 1)) rgen in ((xs !! (fst rand) ) , (snd rand))