Scheme and the Philosophy Behind Perl 6

Contrast Larry Wall‘s take on the “soon to be released” Perl 6 today [in 2008]:

Don’t design everything you will need in the next 100 years, but design the ability to create things we will need in 20 or 100 years. The heart of the Perl 6 effort is the extensibility we have built into the parser and introduced language changes as non-destructively as possible.

(via Computerworld)

with that of [R3RS] Scheme in 1986:

Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary.

(via R3RS, referenced in R5RS)

In other words, language implementers ought to accept that they aren’t going to “get it right” on the first try, and they should leave the language extensible for additions.

Are you as excited about Perl 6 as I am! 🙂

SPITBOL and SNOBOL

During the 1950s and 1960s there was a flourishing of interest in special-purpose computer languages. SNOBOL [String Oriented Symbolic Language] was one of a number of text-string-oriented languages…

SNOBOL was widely used in the 1970s and 1980s as a text manipulation language in the humanities, but in recent years, its popularity has faded as newer languages such as Awk and Perl have made string manipulation by means of regular expressions popular. However, the pattern matching capabilities of SNOBOL are significantly more powerful than those of regular expressions.

(via Wikipedia)

SPITBOL (Speedy Implementation of SNOBOL) is a compiled implementation of the SNOBOL4 language…

One contribution of SPITBOL to computer science was to demonstrate the clear distinction between a language and its implementation. Rather than stating that a language itself is slow, it is more accurate to say that the ability to write a fast and elegant implementation is a rare gift.

(via Wikipedia)

IrRegular Expressions

IrRegex version 0.7.0 is now available here:

A fully portable and efficient R[456]RS implementation of regular expressions, supporting both POSIX syntax with various (irregular) PCRE extensions, as well as SCSH’s SRE syntax, with various aliases for commonly used patterns. DFA matching is used when possible, otherwise a closure-compiled NFA approach is used. The library makes no assumptions about the encoding of strings or range of characters and can thus be used in Unicode-aware Scheme implementations. Matching may be performed over standard Scheme strings, or over arbitrarily chunked streams of strings.

IrRegex is portable between R4RS, R5RS, and R6RS; and almost completely PCRE compatible. Very nice!

(via comp.lang.scheme)

Skimp Scheme

Skimp Scheme is a toy interpreter, about which the author makes a lighthearted quip:

Early days yet, but during a couple of enthusiastic hacking sessions while on Summer holiday in Italy, Skimp started talking back. It’s a surreal moment when a new interactive language interpreter come to life… like something with legs just strolled out of your primordial C program and asking for a pan galactic gargle blaster.

Pocket Scheme

Pocket Scheme gives your PDA a standalone programming capability in Scheme, a dialect of Lisp with exceptionally clear and simple semantics. It supports file creation and manipulation, arithmetic operations of unlimited precision, the complete Unicode character set, data sharing via the Windows clipboard, regular expression matching on character strings, simple TCP client and server networking, scripts written in Scheme, and even direct system calls to the Win32 API.

Snow aka Scheme Now

Scheme Now!, also know as Snow, is a repository of Scheme packages that are portable to several popular implementations of Scheme.

Snow is a general framework for developing and distributing portable Scheme packages. Snow comes with a set of core packages that provide portable APIs for practical programming features such as networking, cryptography, data compression, file system access, etc. Snow packages can export procedures, macros and records.