{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE KindSignatures #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE NoImplicitPrelude #-} module Data.Morpheus.Types.Internal.Resolving.Event ( Event (..), Channel (..), eventChannels, ) where import Prelude ( Eq (..), fmap, ) -- Channel data Channel (event :: *) where Channel :: a -> Channel (Event a c) data Event e c = Event { channels :: [e], content :: c } eventChannels :: Event e c -> [Channel (Event e c)] eventChannels Event {channels} = fmap Channel channels instance (Eq ch) => Eq (Channel (Event ch con)) where Channel x == Channel y = x == y