src/Data/Helper.hs
{-# OPTIONS_HADDOCK show-extensions #-}
{-# OPTIONS_GHC -fno-warn-tabs #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE TypeSynonymInstances #-}
{-|
Module : Helper
Description : Aux Functions
Copyright : (c) Jorge Santiago Alvarez Cuadros, 2016
License : GPL-3
Maintainer : sanjorgek@ciencias.unam.mx
Stability : experimental
Portability : portable
Auxiliar Functions
-}
module Data.Helper
(
-- * Set
unionsFold
,setGenericSize
) where
import qualified Data.Foldable as Fold
import Data.List
import qualified Data.Map.Lazy as Map
import qualified Data.Set as Set
{-|
Union of set monad
-}
unionsFold:: (Ord a, Fold.Foldable t) => t (Set.Set a) -> Set.Set a
unionsFold = Fold.foldr Set.union Set.empty
{-|
Size of a set, with large integers
-}
setGenericSize:: (Ord a) => Set.Set a -> Integer
setGenericSize s = if Set.null s
then 0
else 1 + setGenericSize (Set.delete (Set.findMin s) s)