Retrospect is a programming language designed for scalable data analysis. It is designed to support simple, high-level descriptions of large-scale data analyses, like SQL, but provide the expressiveness of lower-level frameworks like Beam and Spark.
This project is under development. It is not yet a useful tool for data analysis.
For an introduction to the language and its more novel language features, see the overview.
There are also reference documents for the language and core libraries if you'd like to dig deeper.
There are many more documents, but most of them are guides to understanding details of the Retrospect implementation; they're unlikely to make a lot of sense unless you're reading the code.
There are a number of sample Retrospect programs that serve as tests of the implementation. Some of them are very simple. Some are more interesting. Some are quite substantial.
Note that each example is followed by a comment beginning /* RUN
that may include
parameter values (e.g. n=16
for primes.r8t
) and then lists the expected results and
the expected memory use. When these examples are run as tests the results and memory
use must match in order for the test to pass.
You can run all the tests using Maven: mvn test
.
Run.java
is a simple command-line program
for running a single Retrospect program. You can use it to run one of the included
examples, e.g.
mvn exec:java -Dexec.args="src/test/java/org/retrolang/impl/testdata/pidigits.r8t n=16"
computes 16 digits of pi. Note that Run.java ignores the trailing comment that drives the
test framework, so any required parameters must be provided on the command line (n=16
in
this example).
If you write your own Retrospect program, appending the comment that is output by Run.java will provide the information necessary to run it as a test example.