Գրեք սա: A Functional Derivation of the Warren Abstract Machine