The J-Machine: Functional Programming with Combinators