module Heystone.Internal.Util where
import Data.Bits
combineEnums :: (Enum a, Num b, Bits b)
=> [a]
-> b
combineEnums :: forall a b. (Enum a, Num b, Bits b) => [a] -> b
combineEnums =
(a -> b -> b) -> b -> [a] -> b
forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
foldr (b -> b -> b
forall a. Bits a => a -> a -> a
(.|.) (b -> b -> b) -> (a -> b) -> a -> b -> b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> a -> b
forall a b. (Enum a, Num b) => a -> b
enumToNum) b
0
enumToNum :: (Enum a, Num b)
=> a
-> b
enumToNum :: forall a b. (Enum a, Num b) => a -> b
enumToNum =
Int -> b
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> b) -> (a -> Int) -> a -> b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> Int
forall a. Enum a => a -> Int
fromEnum