Seol mar théacs é seo: A Functional Derivation of the Warren Abstract Machine