560 W 218th St Apt 3C New York, NY 10034
home resume projects movies ux/ui bagel code writing
projects > bagel >
I created a general-purpose, high-level programming language called bagel.  bagel is a lightweight yet extensible Lisp-like scripting language written in and easily integrated with Java.  It's called bagel because it goes so well with Java.
( home) ( background) ( features) ( examples)
I created bagel because I was working in Java, but missed the expressiveness and elegance of Lisp.  I missed the freedom, the speed, and the sheer joy of programming in Lisp.  Since then, less restrictive scripting languages like Python have become more popular than ever — perhaps an indication that I was not alone. bagel started out as a faithful Common Lisp implementation.  I decided at some point though that this was actaully a great opportunity to incorporate some of the great features of Lisp into a more modern language.  So while bagel owes everything to Lisp, it barrows a bit from Java and the internet era as well. The symbiotic relationship between bagel and Java has evolved as well.  bagel is written in Java.  You create an instance of the class Interpreter in your Java application and load and run bagel code within that interpreter.  You can easily and seamlessly call Java from bagel and bagel from Java.  Generally speaking I find it more natural to express the high-level business logic for my application in bagel and use Java for the low-level general-purpose functions.