archives

The HM system does not have principal typings for all terms

...so do not all the PLs based on it, do they? Which systems do have them? Read on:

The essence of principal typings

This paper presents a new general definition of principal typings which does not depend on the details of any particular type system. This paper shows that the new general definition correctly generalizes previous system-dependent definitions. This paper explains why the new definition is the right one. Furthermore, the new definition is used to prove that certain polymorphic type systems using for all-quantifiers, namely System F and the Hindley/Milner system, do not have principal typings.
Am I just overly enthusiastic of finding a new source of interesting reading, or are these 12 pages really a worth reading for anybody designing a new PL?

Perl6 vs Java vs Python, or, Java sucks! and the NIH Fallacy

I recently wrote a book that deals with doing things (using features and ideas) in Perl invented and popularized by other languages. People react to that statement in fascinating ways - "what? Why would you want to do something in Perl that another language does? Perl is better so using things from Java and Python is pointless" they say.

I'm going to show first why quoted (paragraphased, actually) statement is dumb and then secondarily why it's a fallacy.

Yes, arguments of this sort still go on.

ACM Queue: A Conversation with Alan Kay

A few choice quotes from this interview:

So I think the lack of a real computer science today, and the lack of real software engineering today, is partly due to this pop culture.

Yes, that was the big revelation to me when I was in graduate school—when I finally understood that the half page of code on the bottom of page 13 of the Lisp 1.5 manual was Lisp in itself. These were “Maxwell’s Equations of Software!”

I fear — as far as I can tell — that most undergraduate degrees in computer science these days are basically Java vocational training.

Even if you’re designing for professional programmers, in the end your programming language is basically a user-interface design. You will get much better results regardless of what you’re trying to do if you think of it as a user-interface design.

Code Generation with Python, Cog, and Nant

We've been using C# for a couple of years now, and are getting tired of the verbosity. Especially tired of copy/pasting and changing a couple of identifiers, and I imagine many other people are, too. After seeing some of the macro capabilities of Lisp, we got jealous. After some googling and browsing, I ran across Ned Batchelder's python-based code generation tool, Cog.

A nice description of using coge generation in real life. Might help explain the idea to programmers unfamiliar with the technique.