On Scheme

Thoughts on Scheme and teaching Scheme

Watch Me Beg For Money

Posted by Peter on May 1, 2006

I am applying for Google Summer of Code. The following is my application this year (submitted to LispNYC and Google):

One Sentence Summary:
I would like to develop a new Lisp language/variant in order to experiment with various ideas that might be later used to improve any Lisp language, hopefully a mainstream one.

Why Another Lisp?
The purpose of this language wouldn’t be to complete with various Common Lisp or Scheme implementations, but to try out new language ideas. Hopefully by playing around with ideas in an actual language instead of on paper the good ones will be separated from the bad ones based on actual usefulness. There is a large list of features that I would like to explore, such as hygienic macros without define-syntax, a module system that supports nested modules and versioning, a transparent system for errors, threads, and multiple values, and probably other ideas that will occur to me later, or I run across in a research paper. The primary idea, which motivates me to write another Lisp from the ground up, instead of just adding macros to existing implementations, is to try out type inference. I want to see if strong type inference, as well as function overloading by type, would be useful to Lisp or simply a cumbersome burden. If you want to see a list of my complaints with Scheme in order to have a better sense of the “problems” that I want to tackle you can go here: https://pschombe.wordpress.com/2006/04/30/real-criticisms-of-scheme/.

Evidence that I can actually accomplish this:
Obviously implementing a Lisp language isn’t the easiest task in the universe, especially if you want that language to be able to compile to native code as I do. As proof that I know what I am doing, and that I can accomplish it in one summer I would direct you to Centum (http://centum.sourceforge.net), which is a language I designed and implemented two summers ago. Although I continued working on it (and published it publicly) during the year the majority of the work was accomplished over summer, despite the fact that I had a job and summer school. Centum was also a horrible hack of a language, and since Lisp can be written for the most part in Lisp it should be a much easier task. Finally, I have already begun to work on parts of the implementation, for example the asynchronous garbage collector (see here: https://pschombe.wordpress.com/2006/04/27/actual-code/).

Technical Details:
This is going to be a Windows project, unless I find someone to help me port it that is. Although I have been interested on working on Linux for some time, because this project is closely tied to the operating system’s capabilities (especially when compiled) I think it is best to stick with what I know, for I fear that the time I would spend leaning how to do the things I want under Linux might take as long as the rest of the project. Also the code itself will be in C++, since once again I need to get close to the hardware in order to accomplish such feats as run-time compilation and asynchronous garbage collection. Of course the primary goal of this project is to experiment with ideas, not with code, and ideas are always cross-platform. I plan on releasing the source under a BSD license.

Plan of attack:
Now – June 17: Framework code written: garbage collector, types, parser
June 17: School Ends
June 17 – June 26: Get a running version working (just the basics)
June 27 – July 12: Implement type inference, enable compilation
July 13 – July 22: Work with modules, threads, macros
July 23 – Aug 2: Work with error handling, debugging options (i.e. step mode)
Aug 3 – Aug 12: This time is budgeted for unforeseen circumstances, documentation
Aug 13 – Aug 22: Work on libraries, such as GUI, add remaining primitive functions, more documentation
Aug 23 – Sept 2: Final week for debugging, more documentation
Sept 2 – Sept 18: Polish code, write examples, libraries, finish documentation
September 18: School Begins

Why you might want to give me money:
Since I have already started working on this project you may wonder why you would want to give me money, because it is obvious that I will continue working on this project without funding. First funding would allow me to focus the majority of my efforts on the project, instead of worrying about part-time jobs or other money making ventures. Secondly my fear of actual deadlines will cause me to work much faster than you would expect, leaving more time to polish the result and to eliminate bugs. Obviously the resulting product will not make you any money, nor is it likely become famous or well loved. The benefit to you is that ideas that could improve Lisp, or any language, are actually put to the test, so that when the next “serious” Lisp language is developed you will know which features to bother with and which to throw away. Obviously, since everyone needs programming languages to get work done improvements in this area benefit businesses and hobbyists alike. Extra bonus: if you want I’ll let you pick the language’s name.

Thanks for your consideration,
Peter Schombert


17 Responses to “Watch Me Beg For Money”

  1. dzentelman said

    money… money… money 🙂

  2. If you are going through the trouble of starting from scratch,
    why not do something that would actual compete with other lisp
    implementations because it has some practical benefit?
    Why not start with a compiler framework
    written in scheme, some code-walker you can get your hands on easily,
    and put your hacking into that, and since you hack in Windows without
    effort, generate common language runtime assembly language.

    Of course then you have no need to hack garbage collectors or any
    of that kind of runtime issue, but there are plenty of other issues
    relating to types, threads, macros, etc.

  3. Peter said

    Three reasons:

    1- Efficiency- It would pain me to write an interpreter in an interpreter, I really couldn’t bear to see it run that slowly, especially since Scheme lacks a way of hinting to the compiler how to optimize.
    2- Challenge- Anyone can write a Scheme interpreter in Scheme, it’s not really interesting or hard enough to be a project I could devote any energy to.
    3- Usability- Even if no one else uses it, I want to be able to program with it. I was thinking of writing some small games in Scheme, but the jerkiness introduced by the garbage collector made me discontinue my work. If I build my implementation from scratch I can eliminate this problem, as well as add other cool language features, and have fun writing some nice fluid games in Scheme.

  4. Eduardo Costa said

    I understand that you want to write a Scheme compiler from scratch. Why don’t you help people who are working with Bigloo? It has an (optional) type system, it is fast, it generates compact/fast code, it allows straightforward bindings to C libraries and C/C++ code, it generates code that is completely compatible with C/Java/dotnet, whichever you choose, etc. Besides this, it works on Windows, Linux, etc. I have done some computer graphics in Scheme, and it is fast, compact, easy to link with GTK and other libraries; since it compiles to native code/jvm/dotnet, it is easy to distribute the code. No, it does not stop to garbage collect; it has a good incremental garbage collector.

  5. Eduardo Costa said

    In case you do not know, Bigloo is hosted at http://www.bigloo.org. See you in the Bigloo list.

  6. Free Tips On How To Make Money Online

    Ways To Make Money Online

  7. Real Free Home Online Jobs…

    Real Free Home Online Jobs…

  8. Paul said

    If you can make a donation now, thank you in advance!

    I have an amazing story for all of you.

    It is not your ordinary Medical ID theft story when a patient gets brain surgery using my name-but also when the patient’s

    family shows up at the hospital and pretends to be my family!

    The Police in Los Angeles can’t believe it. The Police in New York can’t believe it. Private Investigators think it’s a very

    tall tale. The police report has numerous spots of ‘White Out’ on it before it even ever got to me.

    So over the next few weeks, I will show you how I went completely broke through no fault of my own and how this can happen to

    you. It has probably cost me over $250,000 to date.

    If you can donate to me, that would be great. If you are just curious, please keep keep track of my on going story on my


    Thank you in advance for your contributions.

  9. Great site…

    Have a fantastic day!…

  10. thanks for this post. It helped me a lot. Btw How you get ideas for such posts. sorry if it’s out of topic.

  11. youproblog said

    Hi, I found your blog on google. I’m pretty happy to have found your website because I think it is interesting! I will definitely come back! Great resource for my students. Youproblog

  12. This is most certainly the best most thought provoking website to date,I am thrilled I discovered pschombe.wordpress.com

    here are a few words of chaos:
    I consider, what is it very interesting theme. Give with you we will communicate in PM.

  13. Thanks for your kind information.. I realy enjoy it.. keep it up.

  14. manga said

    After reading your blog. I am realy enjoy so much….. THanks for sharing your’s knowldge.

  15. Zella said

    I’m not sure where you’re getting your info, but good topic.
    I needs to spend some time learning more or understanding more.
    Thanks for wonderful info I was looking for this info for my mission.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: