What is Expressiveness in a Computer Language

QCD Apprentice qcd.apprentice at gmail.com
Tue Jun 27 18:54:03 CEST 2006


Joe Marshall wrote:
> Marshall wrote:
>> Yes, an important question (IMHO the *more* important question
>> than the terminology) is what *programs* do we give up if we
>> wish to use static typing? I have never been able to pin this
>> one down at all.
> 
> It would depend on the type system, naturally.
> 
> It isn't clear to me which programs we would have to give up, either.
> I don't have much experience in sophisticated typed languages.  It is
> rather easy to find programs that baffle an unsophisticated typed
> language (C, C++, Java, etc.).
> 
> Looking back in comp.lang.lisp, I see these examples:
> 
> (defun noisy-apply (f arglist)
>   (format t "I am now about to apply ~s to ~s" f arglist)
>   (apply f arglist))
> 
> (defun blackhole (argument)
>   (declare (ignore argument))
>   #'blackhole)
> 
> But wait a sec.  It seems that these were examples I invented in
> response to the same question from you!
> 
> 
>> The real question is, are there some programs that we
>> can't write *at all* in a statically typed language, because
>> they'll *never* be typable?
> 
> Certainly!  As soon as you can reflect on the type system you can
> construct programs that type-check iff they fail to type-check.

Sorry, but can you elaborate on this last point a little?  I think I 
missed something.



More information about the Python-list mailing list