2000-2004 Cat's Eye Technologies. All rights reserved.
This software is OSI Certified Open Source Software.
OSI Certified is a certification mark of the Open Source Initiative.
See the file license.txt for license information.
The beta-Juliet language is not Turing-Complete by itself. Nor is the Portia pre-processor. However, when used together, the intent is that they form a Turing-Complete language.
beta-Juliet models the world as an unordered, unorganized set of
events, such as DominoFalls
, CatMeows
, or
SunSets
.
These events can cause, and be caused by other events. In addition they can do so conditionally - but the only conditional available for checking is: given two events, which one fired more recently?
Portia is solely concerned with expanding parameterized events
into series of concrete events, for example creating events
DominoOneFalls
, DominoTwoFalls
, etc., from
the generalized meta-event Domino(N=Domino)Falls
where
Domino
is an alphabet over the range of dominoes.
Without each other, these languages are interesting but not powerful. beta-Juliet cannot generalize, and therefore is not Turing-Complete. Portia cannot loop unrestrictively, and therefore is also not Turing-Complete.
[Historical note: Portia, as it has stood for many years, cannot really generalize either, so the combination of beta-Juliet and Portia is still not Turing-Complete.]