"Carl Banks" <[EMAIL PROTECTED]> writes:

> Douglas Alan wrote:
>
>> For instance, if Python were to have been designed so that you would
>> write:
>>
>>    let myVeryLongVariableName = 3
>>
>> I would have preferred this over
>>
>>    myVeryLongVariableName = 3
>>
>> With the latter, I have to scan down the line to see that this line is
>> in an assignment statement.
>
> Interesting.  I always found that the visual distinctness of non-Lisp
> programs made it easier to scan. For example, in Python I could blur my
> eyes such that I can't positively identify the letters, but could still
> tell an assignment from a function call from a mathemetical expression;
> not so easy in LISP where expressions are visually similar.

Hey, well I designed my own programming language "Drawl" that combines
the best of both worlds.  A sample program in Drawl would look
something like this:

   proc mostApplicableMethods (g args)
     let appMethods = (filter [lambda (met) (mcProtoMetApp? met lex:args)]
                              (funMets g))
     let nMets = (len appMethods)
     if nMets = 1; appMethods
       elif nMets = 0; %{}
       else let retval = {}
            for i in (range nMets)
              let m1 = appMethods[i]
              for m2 in retval + appMethods[i+1..inf]
                if (isCongruentTo? m2 m1); break
                   else (append list=retval ele=m1)
            retval

This would correspond to the following Python code:

   def mostApplicableMethods(g, args):
     appMethods = filter(lambda met: isMcProtoMetApp(met, args),
                          funMets(g))
     nMets = len(appMethods)
     if nMets == 1: return appMethods
     elif nMets == 0: return ()
     else:
       retval = []
       for i in range(nMets):
         m1 = appMethods[i]
         for m2 in retval + appMethods[i+1:]:
           if isCongruentTo(m2, m1): break
         else: retval.append(m1)
       return retval  

In Drawl all expressions are either functions calls that begin with a
"(" and are Lisp-like, or they are mathematical infix expressions.
Statements and macros, on the other hand, always begin with an
identifier that identifies the statement or macro.  The exception to
what I just said is that statements and macros can be turned into
expressions by surrounding them with square brackets.

Too bad I never got around to actually implementing Drawl, though,
because we all know that what the world needs right now is another
programming language....

|>oug
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to