This conference covers a lot of very interesting topics about the role of functional programming (FP) languages in education (follow the link for ample details). It sounds like a great conference!
(Its co-location with ICFP 2008 is yet another reason to attend, and as FP becomes more popular in the industry today, the question of how to teach FP to imperatively trained programmers becomes especially interesting.)
Tag: Programming Language
Emacs influence on Ruby
Who would’ve thought that Ruby’s block ‘end’ keyword was created to facilitate Emacs? Oh man!
When [Matz] was first starting out writing Ruby, he was coding the Emacs ruby-mode.el for it at the same time. He expressed some frustration with modes for other languages like Python and Pascal in which the editor could not look at a line of code and figure out where it should be indented to, so he resolved that Ruby as a language should not fall into that particular trap. With that in mind he chose the end keyword as a block delimiter so that it would be easier to write an Emacs mode for.
Enhanced Emacs Support for Editing and Running Scheme Code
Neil Van Dyke is a hacker, researcher, Emacs wiz, blogger, and producer of numerous of Scheme libraries. One of his packages, Quack is of particular interest to Emacs using Schemers.
Addendum: 8/1/8
New feature: compile mode can navigate from PLT setup-plt errors.
Composing Functions with Scheme
In the PLT thread [‘complement'[?] of map] Stephen de Gabriel asked if there was a function that would take any number of functions, and an argument, and then apply the first function to the argument, and apply the second function to the result of the first, and so on.
In PLT Scheme, the function is called ‘compose’. Compose:
Returns a procedure that composes the given functions, applying the last f first and the first f last. The composed functions can consume and produce any number of values, as long as each function produces as many values as the preceding function consumes.
I asked if this was typical FP style, and Noel replied that it is so common that compose is an infix operation in Haskell and ML, as far as he could recall.
Here is an example (from the thread) of how it works using the “Pretty Big” language:
(define pam
(lambda (datum . proc-list)
((apply compose proc-list) datum)))
(pam
2
(lambda (n) (/ n 7))
(lambda (n) (- n 3))
(lambda (n) (+ n 10))
(lambda (n) (* n 7)))
> 3
C Sharp and Lisp
Maybe one reason why people love C# so much is that it was influenced by Lisp?
Stranger things have happened.
R6RS can complete with Common Lisp?
R6RS is the new language specification for Scheme. The goal is to provide programming features that folks need for programming “in the large”.
Can it compete with Common Lisp? I don’t think so. I like to think of R6RS as an experiment.
I might be right; I might be wrong.
Haskell Consultants: Well-Typed
Björn Bringert, Duncan Coutts, and Ian Lynagh have started a Haskell consultancy called Well-Typed.
(via CUFP)
Companies using DSLs with Functional Programming Languages
One of the questions that has been lingering in the back of my mind for a long time is “When should a company use a DSL?”. My stock answer has always been “When it makes sense.”
Perhaps a better way is to answer that question is to look at how companies are actually using them today, rather then to simply guess!
Have a look at the “case studies” section in this presentation on ContractML to see how companies are using DSLs today.
(via cufp)
IntelliFactory
IntelliFactory is a company that facilitates the adoption of functional programming, in particular, F#.
(via cufp)
University of Waterloo Switches to Scheme
The University of Waterloo has switched first year students to Scheme.
There is a big difference between learning how to program and in learning a particular language. Scheme makes the former so much easier!