Functional programming in Python

Paul Hudak
Tue, 22 May 2001 10:36:05 -0400

> Two points: I have been with Haskell less than half a year, and already
> I have run into a layout-related bug in a tool that produces Haskell
> source.

Why not have your tool generate layout-less code?  Surely that would be
easier to program, and be less error prone.

> Second, to a Lisp-head like myself something like
>     (let ((a 0)
>           (b 1))
>        (+ a b))
> does exactly what you say: it uses layout to indicate semantic.

Yes, but the layout is not ENFORCED.  I programmed in Lisp for many
years before switching to Haskell, and a common error is something like

>     (let ((a 0)
>           (b 1)
>        (+ a b)))

In this case the error is relatively easy to spot, but in denser code it
can be very subtle.  So in fact using layout in Lisp can imply a
semantics that is simply wrong.