Lisp Style Rules

Riastradh’s Lisp Style Rules are a wholly holistic and unscientific take on Lisp style rules. They have helped me not only to get a better sense of how Lisp people do things, but also why. There is other stuff like this around the Internet, but this is the only I’ve found that I enjoyed reading.
While there are a lot of good rules in the guide, not all of them were new to me, so I only took notes on the ones that I found interesting for one reason or another.
Continue reading “Lisp Style Rules”

The Dylan programming language

When reading about Scheme or Smalltalk, the Dylan programming language is often mentioned.
Here is one person who likes it that has provided some notes on how to translate Scheme to Dylan. Here is his take on it:

Dylan is a completely object-oriented language, with multiple inheritance, generic functions, a powerful module system, a very expressive exception-handling system, hygienic macros, pleasant semantics, and a clean way to turn the knob between expensive dynamic behavior and efficient static constraints.

It sounds very interesting.

Closest statically typed FP "cousin" to Scheme?

Most of the folks with whom I’ve talked about Functional Programming seem to be very skilled in both dynamically and statically typed languages. I’ve learned only Scheme well. Wondering what should come next, I posted to comp.lang.scheme asking about what is a good statically typed Functional Programming language to learn after Scheme. Anton’s reply piqued my interest. Here are the relevant bits:

If you want to learn a more traditional typed functional language, and keep additional learning to a minimum, then SML might make sense both because it’s relatively close to Scheme in its semantics, and because it’s “small” for a typed functional language. It’ll teach you the essentials of typed functional programming.

“It’ll teach you the essentials of typed functional programming”, perfect!

On the other hand, if you’re looking to stretch your brain, Haskell is worth learning. Some might argue that you haven’t really done functional programming unless you’ve done pure functional programming. The combination of purity, lazy evaluation, and a highly advanced type system (particularly in the main Haskell implementation, GHC), makes for a programming style significantly different from that of the (relatively) impure, strict languages like SML, OCaml, and Scheme.

“On the other hand, if you’re looking to stretch your brain”, mmmmm… brain-stretching :).
Addendum: 10/12/08
I got a lot of great feedback on this post from a very diverse bunch of people. It looks like the best place for me to start is with SML and the move on to either OCaml, Haskell, or F#. ML for the Working Programmer was consistently recommended as the best book on SML.
While I haven’t got an urgent schedule for this course of study, I am happy to have a reasonable path to follow when I do pursue it!
Addendum: 12/07/08
Via this post:

* ML – ML is one of the favourite languages used by computer scientists. I suggest learning algebraic data types (sum types and product types) then to move on quickly to Haskell.
* Haskell – I find Haskell makes the most sense only after knowing Scheme and ML. Go crazy with pattern matching, but avoid using monads unless absolutely neccessary because they are cheating! You will be sorely tempted to resort to using them all over the place.

Additional advice to start with ML and then move to Haskell.

CGI scripting with MzScheme

Here is a post on using mzscheme for CGI.
For safe keeping, here is the code:

#!mzscheme -mqf
(define *query-string* (getenv "QUERY_STRING"))
(define (header type)
  (string-append "Content-type: " type "; charset=iso-8859-1~n~n"))
(printf (header "text/html"))
(printf "Hello World~n")
(when *query-string*
      (printf "[~a]~n" *query-string*))
(exit)

Commercial Uses of Functional Programming

Commercial Use articles focus on functional programming “as a means, not an end”. As such, we solicit papers about experiences using functional languages in commercial and open source settings. The purpose of a Commercial Use article is to document and assess cases where functional programming was used in a real world setting. We are interested not only in successes, but also in failures. Articles should distill experiences using functional languages so that others can learn from those experiences, whether the lessons learned be technical, organizational, or about the narratives used to make the case to management.

(via CUFP)