Artifact: Effectful Software Contracts
This artifact accompanies the paper "Effectful Software Contracts." Evaluating the artifact will require you to read, understand, and execute sample code from the paper. There is no experimental evaluation to perform.
1 Phase I: Install and Test
You can either run the artifact in a pre-built Docker image that includes all of the necessary dependencies or manually install the artifact.
1.1 Docker
The Docker image is based on Guix System and contains only a very limited number of tools: bash, coreutils, nano, and vim. Perform a manual installation if you want to use your own development environment.
- Download, import, and run the Docker image:
$ wget https://zenodo.org/records/10151333/files/effect-racket-artifact.tar.gz
$ docker load --input effect-racket-artifact.tar.gz
$ docker run -ti effect-racket-artifact
$ cd effect-racket
- All of the package’s tests should pass:
$ raco test effect-racket-test
1.2 Manual
Install Racket 8.10.
- Run the following commands to download and install the artifact:
$ git clone https://github.com/camoy/effect-racket
$ cd effect-racket
$ # Don't omit the trailing slashes!
$ raco pkg install --auto effect-racket-doc/ effect-racket-lib/ effect-racket-test/
- All of the package’s tests should pass:
$ raco test effect-racket-test
2 Phase II: Examples
Please read (at least) Sections 1, 2, 5, and 7.1 of the submitted paper.
Section 7.1 describes a series of minimal examples that cover the kinds of contracts other systems can express. These examples are included in the effect-racket-test/examples directory. Take a look at some (or all) of these examples and make sure they make sense and correspond to the descriptions included in the paper.
See the Effect Racket documentation and check that it is sufficient to use the library. If you feel comfortable, try out the library on your own examples!