About the PLT Scheme Source Search

John asked about the status of the PLT Scheme PLaneT source search system here; to which Jens replied here and referenced this post. This post has information about why you might want to use the search engine (find out where set! is abused!) and also links to all of his posts about the development of the engine itself.
Jens mentions that he is not able to focus on maintenance at the moment; but if anyone is interested he would be happy to pass them the code.

Normal order and applicative order in Programming Languages

James had mentioned applicative and normal order in a post, on which Matthias commented and then elaborated here.

Normal order and applicative order are failed attempts to explain the nature of call-by-name programming languages and call-by-value programming languages as models of the lambda calculus. Each describes a so-called _reduction strategy_, which is an algorithm that picks the position of next redex BETA that should be reduced. By 1972, it was clear that instead you want different kind of calculi for different calling conventions and evaluation strategies (to the first outermost lambda, not inside). That is, you always reduce at the leftmost-outermost point in a program but you use either BETA-NAME or BETA-VALUE. Non-PL people were confused (and still are) because BETA-NAME looks like BETA but nearly 40 years later, everyone should figure this out. SICP was written when the majority of people were still confused. — Matthias

New PLT Scheme DEV Mailing List

PLT Scheme has a new development related mailing list. The focus of this list is on the development of the PLT Scheme system itself rather than the utilization of PLT Scheme.
Here is a link to the post.
Here is a link to the signup page for the list.
Here is further clarification on who might be interested in this list, as plucked from the “Welcome” email from the list:

Welcome to the plt-dev@list.cs.brown.edu mailing list! This list is for discussions on the implementation and development of PLT Scheme. It is aimed at people who are interested in contributing to PLT Scheme, or who are interested in the implementation of PLT Scheme. However, it is not for general discussion of Scheme, PLT Scheme, or programming — please use the plt-scheme list for those.

Different approaches to shaping code

It is fun to see how different people solve the same problem in code because you often learn new things in the process. In this thread in comp.lang.scheme, the original poster asked about how to define a particular shape of code, but without using non-hygienic macros. My approach is posted within the thread.
The solution itself is no where near as interesting as how it was reached. Basically I followed the lessons that I have been learning by studying HtDP, and the result was basically that the solution “wrote itself”. Granted, I have not reached a “Design Recipe” for writing macros (I suspect that there is not such a recipe in the book); but the disciplined approach may be followed all the same.
Everyone who wants to become a better programmer should read HtDP!

The Dylan Resource Guide

I started learning more about Dylan by reading the material listed in the Dylan Resource Guide in comp.lang.dylan. It is true what they say; Dylan and Scheme seem to be very similar. When you take into account what Dylan purports to offer, it sounds very interesting!
Here are some links from the resource guide:

  • #dylan on Freenode. Channel logs are supposed to be available here; but were not as of this posting.
  • comp.lang.dylan
  • The Dylan Language Reference Manual: The “DRM” defines the Dylan language and standard library.
  • Dylan Programming: Dylan Programming is a book that teaches how to program in Dylan.
  • Gwydion Dylan: Gwydion Dylan is an open source command-line compiler originally developed by Carnegie Melon University as part of their Gwydion project. It is available on several platforms.
  • Open Dylan: Open Dylan is an open source IDE originally developed by Harlequin and, later, Functional Objects. The IDE is available for Windows, and the compiler is available as a command-line program for other platforms.