What would you do if you could use your favorite scripting language to dynamically call in to all sorts of libraries and frameworks native to your operating system?
This is probably very possible with your favorite scripting language; but is it is fun as hearing about doing so to write video games in Lisp?
Author: grant
Looping in Scheme
Not all loops in Scheme are created equally!
Jose Ortega captures a few perspectives on iteration in Scheme in his post, Scheme Loops.
Purely Functional Data Structures
In a thoughtful post on his blog, Chris Okasaki reflects back on his seminal contribution to the study of purely functional data structures.
Visualizing Lisp without parentheses
Michael Weber had the inspiration to imagine how might one visualize Lisp without parentheses in his mwe-color-box.el extension to Emacs.
Below is a screenshot from Michael’s page. More of Michael’s Emacs Hackery is available here.
[[http://www.wisdomandwonder.com/wordpress/wp-content/uploads/2008/02/color-box.thumbnail.png]]
Low Exposure: TinyScheme
Have you ever heard of TinyScheme?
TinyScheme is a lightweight Scheme interpreter that implements as large a subset of R5RS as was possible without getting very large and complicated. It is meant to be used as an embedded scripting interpreter for other programs.
Why you might want to learn FORTH
You may or may have not heard about the programming language Forth, but if you have heard about it, you are very likely to have heard about it from some very happy, passionate Forth developers!
The best advocacy/introduction/tutorial I’ve ever read about Forth is located in the beginning of source code for this Forth interpreter!
After reading this, it is hard not to get excited about the programming language Forth.
GTK-server
GTK-server is another way to write portable GUIs with your favorite programming language.
The GTK-server is a free, open-source project, which offers a stream-oriented interface to the GTK libraries, enabling access to graphical user interfaces for shellscripts and interpreted programming languages using either GTK 1.x or 2.x.
Low Exposure: librep
Have you ever heard of librep?
librep is a dialect of Lisp, designed to be used both as an extension language for applications, and for use as a general programming language. It was originally written to be mostly-compatible with Emacs Lisp, but has subsequently diverged markedly. Its aim is to combine the best features of Scheme and Common Lisp and provide an environment that is comfortable for implementing both small and large scale systems. It tries to be a “pragmatic” programming language.
Low Exposure: IronScheme
Have you ever heard of IronScheme?
IronScheme [aims] to be a R6RS compliant Scheme implementation based on the Microsoft DLR.
These aren’t just nebulous goals either, they’ve actually got the interpreter up and running!
With so much development going on around the DLR right now; I’m going to pay extra special attention to when the *next* Lang.NET symposium is going to happen. It looks like a lot of fun!
Addendum: 24/10/08
ANN: IronScheme 1.0 beta 1
Using Scheme's Eval in Sandbox
One of the most tantalizing features that folks hear about Scheme is the eval function. While in reality, when it comes to meta-programming most modern Scheme distributions have evolved other mechanisms to do so, eval is still a big draw. The biggest shock most folks have when it comes to Scheme, though, is that you can only evaluate expressions in the top level environment. If eval holds your interest long enough, for perhaps any number of different different reasons, you will eventually reach the point where you want to do use it to evaluate code that you didn’t write (my inspiration came in the form of the Dolphin Smalltalk tutorial task where you write network chat clients that can send code to each other for execution). Whatever *your* inspiration was, though, you will also reach the point where you realize that you don’t necessarily want arbitrary code to be executed in the environment in which you are running your program; you don’t want folks sending (exit) for example, that can be pretty irritating. One way to work around this issue to to evaluate your code in a sandbox.
Here are three ways to do it with PLT Scheme: DynamicEvalCustomNamespace, DynamicUntrustedEval, and Sandboxed Evaluation.
Addendum 04/22/08:
Here is a link directly to the Schematics PLT package which provides “a library of useful procedures on namespaces”.
