No description, website, or topics provided.
Racket KiCad Other
Switch branches/tags
Nothing to show
Pull request Compare This branch is 12 commits ahead, 213 commits behind plum-umd:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
monadic-eval
.gitignore
.travis.yml
README.md
info.rkt

README.md

Abstracting Definitional Interpreters

Build Status

Abstract

We show that a definitional interpreter written in monadic style can express not only the usual notion of interpretation, but also a wide variety of collecting semantics, abstract interpretations, symbolic execution, and their intermixings. We give a rational reconstruction of a definitional abstract interpreter for a higher-order language by building a series of components implementing monadic operations. The denouement of our story is a computable abstract interpreter that arises from the composition of simple, independent components. Remarkably, this interpreter implements a form of pushdown control flow analysis (PDCFA) in which calls and returns are always properly matched in the abstract semantics. True to the definitional style of Reynolds, the evaluator involves no explicit mechanics to achieve this property; it is simply inherited from the defining language.

For more, see:

Installation

This code has been tested with Racket 6.3, but probably works with other versions of Racket too.

To install:

   raco pkg install https://github.com/plum-umd/monadic-eval.git

To test:

   raco test --package monadic-eval

This will test every module in the implementation. If no errors occur, the code is working as expected.

To uninstall:

   raco pkg remove monadic-eval