- class C event where
- controller :: C event => Channel -> Controller -> event -> Maybe Int
- liftMidi :: (Channel -> T -> Maybe a) -> Channel -> T -> Maybe a
All methods have default implementations that return
This helps implementing event data types
that support only a subset of types of events.
Maybe a better approach is to provide type classes
for every type of event
C a subclass of all of them.