scheme

part-cw/lambdanative. Interesting - a cross-platform programming environment targeting Android, iOS, OSX, Linux, Windows, and BSD. Based on Gambit-C, a pretty good (and already quite long available, so also "mature") Scheme compiler.

Moby is a package for Racket with which you can create Android programs. Integrated in DrRacket, you also have a suitable IDE in which most things can be tested. So much to try out, so little time.

Whalesong: a Racket to JavaScript compiler. Haven't had a link to the best Scheme implementation on the net for a long time. Okay, Racket is no longer called Scheme, but there is still a lot of Scheme in it. And now there is Whalesong, a backend that produces JavaScript from Racket code - and can even generate standalone HTML files that run directly in the browser.

A What Is Inside A Cat. A very interesting document that describes the implementation of Wraith Scheme in great detail, specifically also the implementation of parallel processes.

dyoo/moby-scheme. Another interesting thing for Android: a PLT Scheme (i.e., Racket) dialect and a suitable toolchain to run applications created from Racket Advanced Student Language + World Primitives (ASL is already quite an extensive Scheme dialect in Racket and the World Primitives are for reactive programming in Scheme) in JavaScript and then bundle them into Android applications. So programming Android phones in a reactive Scheme dialect. Or even shorter: parentheses for Android.

spock - The Chicken Scheme wiki. If Dylan doesn't fit on JavaScript, how about Scheme? What's interesting here is the connection to Chicken Scheme - Chicken Scheme is one of the more interesting Scheme implementations in recent times that specifically focuses on integration into normal system environments (FFI and easy linking with C libraries), so this also lets us expect a bit from Spock in terms of JavaScript. And the documented functions already look quite good - not just a toy implementation, but apparently already a lot of functionality.

IronScheme. Interesting - a Scheme for .NET. And unlike some dead projects I found, something seems to be happening here. Ok, I probably tend more towards IronPython, F# or if it's supposed to be Lisp, Clojure for .NET (there are now quite up-to-date binary packages to try out, unfortunately probably only Windows, at least it spits out errors under Mono).

Exactly. If you want to explain something boring like "why generic functions and not single-object-dispatch," then use examples like these:

A short example: Imagine you have a class human which is inherited by a class male and female. Now as we all have an urge to reproduce where to put a method for having sex? Create a method haveSex in the human class, duplicate it in male or female? What would the argument to such a class be? What about having sex with people of the same sex, toys, animals, buildings...

via /dev/random - Random Thoughts On Programming In Parentheses - Coops - An introduction to chicken scheme's object system.

JazzScheme - huh? Seems to have completely passed me by - there is an IDE for Gambit Scheme that runs on multiple platforms and can create binaries for OS X, Windows, and Linux.

JEmacs - the Java/Scheme-based Emacs - just for future curiosity blogged.

PLT Scheme Blog: Futures: Fine Grained Parallelism in PLT - the best Scheme on the market now also gets microthreads. Still quite fresh at the moment, but this will certainly make it into the standard range in the long run.

Continue: Web Applications in PLT Scheme - and since I can't refer to Scheme without referring to the best Scheme environment of all time, here's a link to a tutorial on programming web applications with PLT Scheme.

JazzScheme - interesting "new" (not really, already 12 years old, but soon to be open source) Scheme environment. Unfortunately only X11 under OSX so far. But the GUI screenshots look very interesting.

More: Systems Programming with PLT Scheme - nice tutorial on how to build a webserver with PLT Scheme.

PLT Scheme Blog - the new version is out now! And one of the nice new features: typed-scheme is integrated.

PLT Scheme version 4.0 is Coming Soon - the best Scheme system in the world will soon have a new version with many new features and some background changes. Sounds very promising.

XML Transformation in Scheme - small example of how to play around with PLT Scheme and XML.

impromptu - a Scheme environment explicitly for using AudioUnits. Computer-generated music, with the help of heaps of parentheses.

ETOS Compiler - compiles Erlang source to Scheme (Gambit-C).

(The Scheme Way): Erlang or Gambit-C/Termite? A practitioner's perspective - Erlang wins the comparison. Some good points - especially Erlang's infrastructure is simply better and more mature.

Scheme 48 - new release 1.6. Very interesting elements for programming with threads. Looks like someone has gone wild in all possible concepts.

Object Debugger - new toy for the best Scheme system in the world: DrScheme. This time a very interesting debugging tool for object-oriented programs, which expands the already impressive toolbox.

DrScheme - the best Scheme implementation in the world now has a new version 350. This version includes, among other changes, a Just-in-Time-Compiler for Intel and PPC.

Scsh PhotoBase - is a photo management software like iPhoto, but written in Scheme and for use over the web. So far only an announcement, but the source will definitely be released.

Cocoa for Bracket Fetishists

There is actually an Objective-C Bridge for the second best Scheme in the world. And I hadn't seen it before. It looks very interesting, the author has a nice tutorial online where he controls his iTunes with Scheme. And a lot of other source samples for Chicken-Scheme, including the obligatory currency converter. However, you need a newer Chicken-Scheme version (i.e., a current snapshot), otherwise the -objc switch is not supported.

If they keep being this productive, Chicken will soon displace the best Scheme from its place.

The installation is quite hairy, so here are some notes on how I did it:

  • Chicken Scheme 2.3 is the minimum
  • Install libffi from Darwinports: sudo port install libffi
  • Install objc Egg:

sudo chicken-setup -c "-I/opt/local/include -L/opt/local/lib" objc

Gauche:ObjectiveCBridge - there is also an Objective-C Bridge for Gauche Scheme. However, with fewer sophisticated examples.

Just-In-Time Scheme

plt-scheme gets a JIT Compiler - which should provide a significant boost for DrScheme, the best Scheme in the world. So far, it has been a purely interpreted system with its own virtual machine - and that was already damn fast. But a JIT compiler can bring a lot, especially for larger string mountains or list gobblers and number tangles. It will be exciting to see how this compares to e.g. Gambit-C and Chicken.

Bill Clementson's Blog: Update on Termite (A Lisp for Concurrent/Parallel Programming) - Information about Termite, a Scheme based on Gambit-C with the concurrency features of Erlang. Sounds very interesting, check it out when the code is released.

Gambit Scheme - a new Beta

From the third best Scheme in the world - Gambit Scheme System - there is a new beta for version 4.0. Particularly interesting about Gambit-C is - besides the high performance of the code - the truly brilliant threading implementation. Normal Scheme continuations are used and then a dispatcher is placed on top. As a result, threads under Gambit-C hardly need any memory (on a 2G machine you can easily run over a million threads) and resources (and yes, the switching with a million threads is also quite decent). As a result, Gambit-C is the absolute number 1 for massive multithreading on single-processor systems - and web servers love many threads.

And before anyone asks: the best Scheme is of course PLT Scheme (Dr. Scheme) and the second best is Chicken Scheme - because Chicken Scheme still has the most impressive library of included code after PLT Scheme. Gambit-C could learn a lot here and include more libraries, because libraries are what really make the language usable. At the moment, it is still quite bleak for Gambit-C.

By the way, the license issue is finally resolved: you can now choose between LGPL and Apache license for Gambit-C, which should really make all license discussions obsolete.

Download DrScheme v300 - a new version of the best Scheme system in the world is out. Grab it while it's fresh. Now with Unicode!

Common Scheme

Common Scheme is an implementation of a common module standard for various Scheme implementations, including a package installer that can fetch its stuff from the net. This comes with a number of initial modules that are distributed via it. Could become something like CPAN for Scheme.

Similar approaches have been made before, but unfortunately only for individual Schemes (e.g. MZScheme has something like that). A Scheme-wide solution could make things a lot easier in the long run - and get Scheme out of the academic corner. The language deserves it.

And the best part: Gambit-C and Chicken are among the supported Schemes

Unfortunately, MZScheme is missing from the list of supported Schemes - it would be pretty cool to develop your programs with DrScheme and then simply run them through Chicken to get them quickly ...

The CHICKEN Scheme Compiler

A frequently overlooked (also by me) Scheme implementation is the CHICKEN Scheme Compiler. What's special about this implementation: in addition to the interactive interpreter, there is a compiler that produces portable C and compiles it into loadable modules using a C compiler. This makes this compiler particularly good for integrating C libraries. In principle, this is still quite similar to Gambit-C, another Scheme implementation that uses C as an intermediate language.

But Chicken goes beyond Gambit-C in terms of generated C code - the system is explicitly designed to be mixed with C, while Gambit-C simply uses C as a portable assembler. In Chicken, the FFIs (Foreign Function Interfaces) are much simpler. This is evident in finished interfaces to various databases such as metakit (used in the Python Desktop Server), PostgreSQL, and sqlite.

In addition, Chicken has gained a nice infrastructure of network-installable extensions with the Eggs - with web server, database, and many other delicacies. This of course helps immensely in programming - I have come to love such an infrastructure of ready-made code with MZScheme, Python, and Perl.

Chicken also compiles under Mac OS X. At the moment, the compiler is running in the background for me.

FramerD is an object database (ok, a Framestore - but it's something similar) with an integrated DB server, CGI interface, and Scheme scripting language. Ideal for building knowledge databases, as FramerD is optimized for the pointer-heavy structures involved. But also very exciting, as you get a Scheme with server and ODB. I definitely have to play with it, especially since it should also compile on OS X (though it doesn't work for me right now). And it is licensed under GPL. And for the snake charmers among the monkey programmers, there is also an experimental Python library for accessing FramerD...

SISC - Second Interpreter of Scheme Code

SISC Scheme is a very complete Scheme interpreter and compiler written in Java. Particularly interesting: there is a continuation-based web framework for it.

Other interesting features include good integration into the Java world through the Java-Scheme interface. In principle, all libraries from the Java world are also available in Scheme.

SISC Scheme also supports SLIB (an extension library for Scheme with many useful modules) and various SRFIs (Scheme Requests for Implementation - the formal way to extend the Scheme language with standard modules).

upcoming change in PLT Scheme v300 - lambda, filter and fold out. Right. After all, Python's Guido has already demanded this.

DrScheme 300 Series

freshmeat.net: Project details for DrScheme: Yeeeehaaaa!!!! DrScheme is becoming Unicode-capable. Very nice. Ok, the other features sound very good too, especially the portable continuations for threads - opens up quite new possibilities for mischief in the code.

In any case, the best Scheme environment continues to evolve and is getting even better.

ETOS Compiler - Erlang-nach-Scheme Compiler der speziell für Gambit 4.0 ausgelegt ist

Gambit Scheme System - effizientes Scheme das mittels C-Compiler native Code erzeugt

Psyche - Noch ein Scheme in Python. Hatte ich glaub ich schon mal

schemon - Scheme in Python mit guter Integration der Sprachen

MrEd Designer - GUI Builder für PLT Scheme

WebHome - Cookbook - s c h e m a t i c s : c o o k b o o k - Kochbuch für praktische Scheme-Anwendung

Project Schematics - Diverser Scheme-Code für MzScheme, unter anderem Datenbanktreiber, Wiki, PDF-Writer ...

spgsql - PostgreSQL Treiber der komplett in Scheme geschrieben ist

thunk webserver - interessanter Webserver komplett in Scheme - zur Portierung von TooFPy geeignet?

Bigloo homepage - Bigloo ist eine der mächtigsten Scheme Implementierungen mit verschiedenen Codegeneratoren (.NET, JVM und C-Code)

Psyche - Ein Scheme in Python, das mit Python-Funktionen erweitert werden kann

QScheme - kompaktes und schnelles Scheme auf Basis einer eigenen VM

Schemix - Scheme als Kernel Modul im Linux Kernel

Databases and Scsh - PostgreSQL Client in Scheme