[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: [ANN] GSL Shell new beta release with anti-gran graphics module
- From: Norman Ramsey <nr@...>
- Date: Thu, 03 Dec 2009 18:40:55 -0500
> > No it's not. I've written too much "\x -> x * (x-1)" to be satisfied
> > with standard Lua syntax. This syntax, from Haskell, looks
> > like line noise only if you've never seen lambda calculus.
> And other line noise looks like line noise only if you've never seen C.
> Or BNF. Or Python. Or Perl. Or awk. Or ada. Or APL. Or Scheme.
Come on, David---be fair. Lambda calculus occupies a privileged
position. Unlike Python, Perl, or APL, lambda calculus is 70 years
old, and it is the lingua franca of the functional-programming community.
People who are *interested* in programming with first-class functions
either are already familiar with lambda calculus or will soon learn
> > Look at the information design: in the standard Lua example you give,
> > there are 30 characters of which 8 are unique to this particular
> > function, and the rest are syntactic noise. The Haskell version is 15
> > characters with 10 unique ones, or if you compress to "\x -> x*(x-1)"
> > (apples to apples), 13 characters of which 8 are unique to the
> > function. The information density for the Haskell syntax is much
> > higher.
> Information density is not a Lua design goal. Use APL if you are
> concerned about that.
I agree that Lua's goal is not to *maximize* information density.
I believe Lua's goal is *appropriate* information density: there
should be enough keywords to guide beginners, but for experts, there
is not too much syntactic noise. And I do think that in the case of
anonymous functions, Lua's design is out of balance: there is more
syntactic noise than is really tolerable, and what's going on is not
particularly helpful for beginners.
> So you are frustrated that Lua is not Haskell or Scheme...
Kindly do not put words in my mouth.
> I would be frustrated when Lua were not Lua.
But Lua is a moving target! Over the course of its lifetime, Lua has
changed radically. Do you want to return to upvalues with '%' syntax?
The introduction of lexically scoped closures was a serious change in
the language, and I think it unfortunate that this change was not
accompanied by a reconsideration of the syntax and the libraries in
light of this new feature.
I do not advocate for introducing Haskell syntax into Lua.
But I do advocate for more thought going into how Lua could be changed
the better to support functional programming---while remaining Lua.
Lua's design (and Roberto's book) show evidence of great effort put
into supporting object-oriented styles of programming in Lua.
I think it reasonable to ask that comparable effort be invested in
supporting functional styles of programming---while keeping Lua Lua.