uni-events-2.2.1.0: Event handling for the uniform workbench

Events.GuardedEvents

Description

In GuardedEvents we extend the notion of PrimEvents to allow Guarded Events, which can be guarded with the new (|>) operator. GuardedChannels will implement guarded events on channels, which will hopefully be the only guarded event we will ever need.

Synopsis

Documentation

data Guard guard => GuardedEvent guard a Source

A GuardedEvent guard a represents a source of values of type a, which may be selected from according to guards of type guard.

Constructors

GuardedEvent !(guard -> Event a) !guard 

Instances

Guard guard => HasEvent (GuardedEvent guard) 
Guard guard => HasGuard (GuardedEvent guard) guard 

class Guard guard => HasGuard eventType guard whereSource

Methods

(|>) :: eventType a -> guard -> eventType aSource

Instances

Guard guard => HasGuard (GuardedEvent guard) guard 

class Guard guard whereSource

A Guard represents some condition on a value which we impose on a channel, selecting those values we are interested in.

Methods

nullGuard :: guardSource

this should be the guard that always matches

andGuard :: guard -> guard -> guardSource

this should be the guard that corresponds to the conjunction of the two given guards.

Instances

Guard () 
Ord key => Guard (EqMatch key) 

class HasListen chan whereSource

Class of those channels which have guarded events.

Methods

listen :: Guard guard => chan guard a -> GuardedEvent guard aSource