@@ -257,10 +257,10 @@ class ( MonadHold t (PushM t)
257 -- least one input event is occurring, and will contain all of the input keys
257 -- least one input event is occurring, and will contain all of the input keys
258 -- that are occurring simultaneously
258 -- that are occurring simultaneously
259 merge :: GCompare k => DMap k (Event t) -> Event t (DMap k Identity) --TODO: Generalize to get rid of DMap use --TODO: Provide a type-level guarantee that the result is not empty
259 merge :: GCompare k => DMap k (Event t) -> Event t (DMap k Identity) --TODO: Generalize to get rid of DMap use --TODO: Provide a type-level guarantee that the result is not empty
260− -- | Efficiently fan-out an event to many destinations. This function should
260+ -- | Efficiently fan-out an event to many destinations. You should save the
261− -- be partially applied, and then the result applied repeatedly to create
261+ -- result in a @let@-binding, and then repeatedly 'select' on the result to
262− -- child events
262+ -- create child events
263− fan :: GCompare k => Event t (DMap k Identity) -> EventSelector t k --TODO: Can we help enforce the partial application discipline here? The combinator is worthless without it
263+ fan :: GCompare k => Event t (DMap k Identity) -> EventSelector t k
264 -- | Create an 'Event' that will occur whenever the currently-selected input
264 -- | Create an 'Event' that will occur whenever the currently-selected input
265 -- 'Event' occurs
265 -- 'Event' occurs
266 switch :: Behavior t (Event t a) -> Event t a
266 switch :: Behavior t (Event t a) -> Event t a