{-# LANGUAGE AllowAmbiguousTypes #-}
module HaScalaM.Classes.Enums where
import HaScalaM.Classes.Base
import HaScalaM.Classes.Pat
import HaScalaM.Classes.Term
class Tree t => Enumerator t
class ( Enumerator e
, Pat p
, WithBody b e
) => Assign p b e
where pat :: e -> p
rhs :: e -> b
class Assign p b t => CaseGenerator p b t
class Assign p b t => Generator p b t
class ( Tree t
, Term b
) => Guard b t
where cond :: t -> b
class Assign p b t => Val p b t
class ( Enumerator e
, WithExprs e w
) => WithEnums e w
where enums :: w -> [e]
enums = w -> [e]
forall e w. WithExprs e w => w -> [e]
exprs