packages feed

hw-rankselect-base-0.3.2.4: src/HaskellWorks/Data/RankSelect/Base/Rank.hs

{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MultiParamTypeClasses #-}

module HaskellWorks.Data.RankSelect.Base.Rank
  ( -- * Rank & Select
    Rank(..)
  ) where

import HaskellWorks.Data.Positioning
import HaskellWorks.Data.RankSelect.Base.Rank0
import HaskellWorks.Data.RankSelect.Base.Rank1

class Eq a => Rank v a where
  rank :: a -> v -> Count -> Count

instance Rank [Bool] Bool where
  rank a = if a then rank1 else rank0
  {-# INLINABLE rank #-}