Packages

The Phi Programming Language

Current section

Files

Jump to
phi lib Data List Utils.hm
Raw

lib/Data/List/Utils.hm

module Data.List.Utils where
import Data.Semiring ((+))
import Data.Ord (class Ord, compare)
import Data.Eq (class Eq, eq)
data Label a b = Label a b
genLabels :: forall a. [a] -> [Label a Integer]
genLabels = genLabels' 0
where genLabels' _ [] = []
genLabels' n [x|xs] = [Label x n|genLabels' (n + 1) xs]
removeLabel :: forall a b. Label a b -> a
removeLabel (Label a _) = a
removeLabels :: forall a b. [Label a b] -> [a]
removeLabels [] = []
removeLabels [x|xs] = [removeLabel x|removeLabels xs]
instance Eq b => Eq (Label a b) where
eq (Label _ a) (Label _ b) = eq a b
instance Ord b => Ord (Label a b) where
compare (Label _ a) (Label _ b) = compare a b