Bus Scheme is an implementation of Scheme in Ruby.
You can read a little more about it in various posts on the authors blog.
The University of Waterloo has switched first year students to Scheme.
There is a big difference between learning how to program and in learning a particular language. Scheme makes the former so much easier!
If you try to pin down Schemers to a particular stereotype, you will fail; they are just too diverse a bunch.
Take Shiro Kawai’s website. He’s got some great resources on that page. Dig in deeper and have a look at his paper Gluing Things Together – Scheme in the Real-time CG Content Production.
The short story is that
Square USA R&D Team had been developing an in-house real-time rendering engine in a project called Dancer, and we adopted Scheme as an embedded scripting language.
Here is how they used it:
There are a lot, and I mean a lot of really interesting bits about how the tackled the problems they were facing.
The best part: you don’t have to be a computer graphics buff to have a heck of a good time reading this paper. Enjoy!
Here are the two blurbs where I heard about it:
I had held off posting this for a while in hopes that presentations materials would show up. They haven’t set; so I’m going to have to do some digging!
The home page for Ur-Scheme tells the tale of one mans journey implementing a compiler from a subset of Scheme to Assembly on Linux.
For folks interested in almost totally pure functional programs, here is a teaser:
It contains relatively little mutation. Although almost every line of the compiler has “side effects” like outputting lines of assembly code, there are fairly few locations where the compiler’s internal state is mutated. I count 25 calls to set! and string-set! in the 1600 lines of code, including the standard library.
PLT Scheme’s user interface library is called Mr Ed. It is used to provide DrScheme to thousands of computers running Windows, Mac OS, and UNIX. It “just works”, and does so well; it is a fine graphics toolkit. MrEd Designer aims to make Mr Ed even easier to use!
Peter Ivanyi now maintains this application.
MrEd Designer 2.1.2 is released; it now supports tab-panels.
In MrEd Designer 2.1.3:
At one time or another you have probably heard the claim made that since you can utilize closures while programming in Lisp, there is no need to utilize an object system. That claim is sort of a half-truth. While closures are the language construct that allow you to create objects, they certainly don’t provide you with all of the object oriented programming language features that you would expect. Instead, you need to implement those features yourself.
The question was posed on the PLT discussion list. Some very good points were made about the issues you must address when implementing such an object system yourself, along with a pointer detailing how the issues are addressed in PLT Scheme.
In response to this excellent blog post by Dave Herman, Jay McCarthy pointed the reader to this interesting paper about creating a language construct that allows you to modularly redefine how your code (that you may or may not have written) gets evaluated (in other words, nonstandard interpretation).
is a powerful and useful construct that supports such tasks as tracing, security logging, sandboxing, error checking, profiling, code instrumentation and metering, run-time code patching, and resource monitoring.
Obviously, these things aren’t new features. You can probably already perform nonstandard interpretation using your language of choice.
The interesting thing about this approach is that rather than performing compile time environment or code manipulation, a new language feature is applied to perform the non standard interpretation at runtime.
While both will get you to the place that you want to go; only the latter offers you an opportunity to build a conceptual framework for understand how you reached your destination. Neat!
I’m pretty sure this patch has made it into the main source branch.