beta-Juliet is a minimal event-based language. Each event is caused by some other event. Event causation is conditional based on which of two given events occurred more recently.
Portia is a preprocessor for beta-Juliet which allows large, regular, finite sets of events to be described succinctly.
Version 2.0 of beta-Juliet (formerly known as "2iota") allows infinite sets of events to be specified, allowing the language to be Turing-complete.
event WindowSwitchBroken; event MotionDetectorTriggered; event SystemArmed; event SystemDisarmed; event Alarm, caused after WindowSwitchBroken when SystemArmed > SystemDisarmed, caused after MotionDetectorTriggered when SystemArmed > SystemDisarmed, causes Alarm. alphabet Domino, One, Two, Three, Four, Five, Six, Seven; event Begin, causes Domino One Falls; event Domino (N = Domino+) Falls, causes Domino (succ N) Falls.
2iota in the beta-Juliet distribution
Issue tracker: on github