Introducing Notebook
2011.01.12 in code
Since mid-November, I've been using my free time to work on a little application currently called Notebook. It's a REPL of sorts, but implemented in Cocoa, and heavily inspired by Mathematica (since Mathematica also calls its evaluation environment a 'notebook', I'm open to suggestions for a new name, and probably won't be shipping it with the current one).
I pushed up a content-free website last night... it'll get filled in eventually. The code is on Github.
Notebook has a pluggable language system; for right now, I'm primarily maintaining a Python backend, though there is a working Ruby backend in the repository as well. Matt has talked about implementing a Haskell backend, which I think would be awesome, but hasn't gotten around to it yet.
When you evaluate a cell, its output is captured and attached directly to its bottom; when you re-evaluate a cell, the old output is replaced:
That's basically all there is to it, right now... I just wanted to get it out there. There are a huge number of features planned, and a huge number of known bugs, and many months of work to do before it's 1.0 — if anybody wants to help, feel free!
It is currently 100% not ready for anyone to use it; while it works, many basic features haven't even been considered yet, as it's been all about getting the backends working properly (which was a Distributed Objects learning experience, believe you me!). However, I hope that someday it can be the place that I point people who want to learn Python — the instant, inline feedback that it provides could be extremely useful (it was for me, with Mathematica, anyway!).