Python syntax in Lisp and Scheme

Dave Benjamin ramen at lackingtalent.com
Thu Oct 9 05:13:57 EDT 2003


In article <799hb.4014$dn6.551 at newsread4.news.pas.earthlink.net>, Andrew Dalke wrote:
> Dave Benjamin:
>> Interestingly enough:
>>
>> "The language is strongly-typed, but without declarations. Types are
>>  determined from context."
>>                 - http://ftp.cwi.nl/abc/abc.intro
>>
>> Sounds like type inference to me.
> 
> Sound like dynamic typing to me.  Python is strongly-typed
> but without declarations, and the type is determined as needed.
> But I don't know enough about ABC to authoritatively declare
> that it does/does not do type inferencing.  My guess is that it
> does not.

Yeah, I'm sure you're right. Even though I've made the argument against
confusing static and strong typing myself many times, I still got caught off
guard myself. Doesn't "determined from context" sound a little different
from dynamic typing, though? I mean, to me, it reads like:

We don't declare types, ie.:
  int i = 5
Instead, we determine them from context:
  i = 5
  
What has the type, according to that language? The "i" or the "5"? How is
the type of "5" determined from context? Shouldn't it be "int", regardless of
context?

>> Also:
>>
>> "There is no GOTO statement in ABC, and expressions do not have
>> side-effects."
>>                 - http://homepages.cwi.nl/~steven/abc/teaching.html
>>
>> Hints both at the statement/expression dichotomy of Python and the issue
>> that side-effects make it difficult to reason about a program, one of the
>> most important assertions made by functional proponents (IMHO).
> 
> I think you're reading too much into it.  The example code
> doesn't look at all functional to me, as in (from the main page)
> ...

Nah, I think you're reading too much into my comment. I was just making an
observation. I don't think ABC is an FPL by a mile, from what I've read.

However, I *am* interested in things that people seem to value despite the
fact that they solve problems in sometimes radically different ways. Maybe
you don't see it, but I definitely see some parallels between the
idea of separating statements from expressions and the idea of separating
the imperative, mutating, side-effectful code from the immutable, declarative
functional, query-oriented, side-effect free.

I think there is a greater point to be made about all of this, and it has
something to do with time and change.

Dave

-- 
.:[ dave benjamin (ramenboy) -:- www.ramenfest.com -:- www.3dex.com ]:.
: d r i n k i n g   l i f e   o u t   o f   t h e   c o n t a i n e r :




More information about the Python-list mailing list