A Functional Derivation of the Warren Abstract Machine
Maciej Pirog and Jeremy Gibbons
Based on Danvy et al.'s functional correspondence, we give a further example of gradual re finement of an interpreter into a known, low-level abstract machine underlying real-world compilers, by deriving an abstract model of the Warren Abstract Machine from a simple resolution-based Prolog interpreter. We show that other well-known functional programming techniques (namely, explicit laziness and semi-persistent data structures) can help to develop abstract machines without detailed examination of the semantics realised by the interpreter.