Escher A language for connecting technologies using pure metaphors

Reflex basis and faculties

A faculty is a set of reflexes, similar to a package in Java, or a namespace in C++.

There are two kinds of reflexes in Escher:

We will now have a look at the equivalent of std in C++, the Escher basis faculty.

Basis reflexes determine the basic arithmetic and data manipulation operations that Escher programs can ultimately perform, as well as external technologies that Escher programs might have access to.

Arithmetic

There are various ways to design and implement small sets of arithmetic basis reflexes that would render circuit programs Turing-complete. We leave the design of such bases to the users of Escher, whose imagination and use cases might inform choices that we cannot predict from scratch.

Information flow

We find that most Escher programs benefit from a few basic reflexes that control information flow. We have included a few in the default runtime, and they are described in a separate page. These gates can be viewed as Escher's “synchronization” facilities.

External technologies

Basis reflexes are also Escher's way of interacting with external technologies such as input/output devices. The POSIX systems is a canonical example of an external technology, and Escher has a dedicated os faculty for it.

Escher within Escher

The most powerful feature of Escher is its recursive nature: Circuit programs can create program circuits and materialize them into other circuit programs. This programming pattern is enabled by the escher faculty, which among other things offers reflexes that materialize program circuits.