Peter Wood <peter.wood / worldonline.dk> writes:

> In your essay, you write:

> Ben Tilly writes:

> 
> > Programming languages often have some sort of type system. Some
> > languages (eg JavaScript) attempt to have both untyped operators and
> > untyped variables. This is a truly horrible idea.  Languages which
> > want a minimal level of sanity _need to type one or the other_. Perl
> > types its operators, Ruby its variables. (Ruby, like Smalltalk, uses
> > dynamic runtime typing. If you try to access a method that isn't
> > there, you blow up. Everything is a method call.)" [my emphasis]
> 
> What about Lisp?  Values are what is typed in Lisp, not variables or
> operators.  You *can* declare for efficiency, but you don't have to.
> Lisp has a type hierarchy where every object has more than one type.
> You also write you have a math background.  So I'm surprised you don't
> mention Lisp.

Unfortunately for Ben, Ruby also falls into the "truly horrible idea"
category. Ruby variables are _not_ typed, but take on the type of
whatever they happen to reference at the time. Similarly, the majority 
of operators have no semantic meaning to Ruby, as they are simply
method calls. This is the same as the Smalltalk and (in my limited
understanding) the Javascript model.

This lack of constraint is one of the defining features of the
language.


Regards



Dave