[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: another take on hackers and painters
On Thursday, May 22, 2003, at 12:53 AM, Mike Lambert wrote:
> The argument about 1 + "3" and what it should do isn't just a matter of
> what to do with "3". There are two different questions to this problem.
> One of which is being ignored and making the discussion a lot more
> confusing than it needs to be, imo. :)
>
> A) Who provides the interpretation for the operator and the contexts
> for
> the operands?
> B) How do you handle the case of coercion to the required context?
>
> In typed languages, B is "you don't". This necessarily provides a lot
> more
> freedom to A. A+B does different things depending upon whether the
> operands are integers, strings, or floats. 1+1 returns 2, and "1"+"1"
> returns "11". The interpretation of the operand uses the whole type
> system
> to figure out which operand function is the desired one that matches
> the
> operands.
>
> Now, try showing a dynamic typing system to a static typing person, and
> they go crazy. "1+"3"? Insane, bugs will proliferate!" To a
> static-typing
> programmer, 1+"3" is as confusing as "1"+"3" is to a dynamic
> programmer.
> The main difference is that in dynamic typed languages, the answer to
> question B above allows for type coercion to the types necessary for
> the
> operands.
Be careful. The distinction you're talking about is largely orthogonal
to the dynamic vs. static typing issue. Case in point: Scheme is
dynamically typed, but will not perform the coercion you're describing.
At the opposite corner, there's no reason you can't have a statically
typed language with coercion.
john clements