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.
Sample Program
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.
Computational Class
Programming Paradigms
Documentation
Implementations
-
b_juliet.pl, an interpreter in Perl
To run this implementation, you need:
- an implementation of Perl (we suggest perl 5.8.8)
-
To run this implementation, you need:
Download
Development
Github: catseye/beta-Juliet
Bitbucket: catseye/beta-juliet
Issue tracker: on github