Helium for learning Haskell

Helium is a user-friendly compiler designed especially for learning the functional programming language Haskell. The quality of the error messages has been the main concern both in the choice of the language features and in the implementation of the compiler. Helium implements almost full Haskell, where the most notable difference is the absence of type classes. Our goal is to let students learn functional programming more quickly and with more fun. The compiler has been successfully employed in two introductory programming courses at Utrecht University.

(mentioned on the PLT discussion list)

Why Calculating is Better than Scheming

In 1987 Phil Wadler wrote the paper Why Calculating is Better than Scheming. It is an essay on the shortcomings of using Scheme as the programming language with which to teach beginning programmers in SICP, and how Miranda would have a better choice for teaching the software engineers of tomorrow. This was very fun for me to read, and might be for you, too, if you are interested in teaching or the history of both Haskell and Scheme.
Continue reading “Why Calculating is Better than Scheming”

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.

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)

Sequencing in Scheme

When I was first learning about Functional Programming and Scheme, the idea that order-of-execution didn’t matter in purely functional programs, was “strange to me”, to put it nicely. When I first read about Scheme’s begin form, for example, I remember feeling satisfied that Scheme wasn’t totally insane as it had at least some way to force imperative execution (the fact that, at the time, I never considered how such a feature may be implemented using Scheme’s core constructs, I now consider to be both a ‘missed opportunity’ and ‘study flaw’, then again you could also call it ‘learning’). Nonetheless, much, much later, while reading LAMBDA: The Ultimate Imperative, I came upon page 5 on which the question of how we may model imperative constructs in languages based on lambda calculus (like Scheme, for example) was raised.
Continue reading “Sequencing in Scheme”

DEFUN08: ACM SIGPLAN 2008 Developer Tracks on Functional Programming

DEFUN 2008 invites functional programmers who know how to solve
problems with functional progamming to give talks and lead tutorials
at the The ICFP Developer Tracks.
We want to know about your favorite programming techniques, powerful
libraries, and engineering approaches you’ve used that the world
should know about and apply to other projects. We want to know how to
be productive using functional programming, write better code, and
avoid common pitfalls.

ICFP08 looks like a lot of fun!
(via PLT)

On Functional Programming in Education

Regarding my last post, you should definitely read all of the comments. It is pretty interesting to get everyone’s perspective on the topic (even if it is simply something to the effect of “Sounds like a great idea!”). Take, for example, Dan Friedman‘s comment:

Since I have been teaching functional programming in my undergraduate programming languages course since 1967, I am thrilled that at long last I might be teaching the sanctioned material.

Functional Programming in Education

On May 28-29, 2008 SIGPLan held a workshop on Programming Languages in the Curriculum at Harvard.

to discuss the role of Functional Programming in Education. The results of their efforts are here.
Please have a look, and, per Matthias’ comment, please consider posting your comments (under the “Programming Languages” section)!