module Query where
import Control.Monad (liftM2, )
import Data.List (genericLength, )
import qualified Data.Map as Map
showTable :: Show a => [a] -> IO ()
showTable =
mapM_ print
cross :: [a] -> [b] -> [(a,b)]
cross = liftM2 (,)
join :: (Eq f) =>
(a -> f) -> (b -> f) -> [a] -> [b] -> [(a,b)]
join af bf as bs =
filter (\(a,b) -> af a == bf b) $
liftM2 (,) as bs
average :: (Fractional a) => [a] -> a
average xs =
sum xs / genericLength xs
averageInt :: (Integral a) => [a] -> a
averageInt xs =
let n = genericLength xs
in div (sum xs + div n 2) n
groupBy ::
(Ord key) =>
(a -> key) -> [a] -> [(key, [a])]
groupBy f =
Map.toAscList .
Map.fromListWith (++) .
map (\a -> (f a, [a]))