What is Expressiveness in a Computer Language
pc at p-cos.net
Wed Jun 28 08:52:37 EDT 2006
David Hopwood wrote:
> Pascal Costanza wrote:
>> David Hopwood wrote:
>>> Marshall wrote:
>>>> 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?
>>> In a statically typed language that has a "dynamic" type, all
>>> dynamically typed programs are straightforwardly expressible.
>> What about programs where the types change at runtime?
> Staged compilation is perfectly compatible with static typing.
> Static typing only requires that it be possible to prove absence
> of some category of type errors when the types are known; it
> does not require that all types are known before the first-stage
> program is run.
Can you change the types of the program that is already running, or are
the levels strictly separated?
> There are, however, staged compilation systems that guarantee that
> the generated program will be typeable if the first-stage program
...and I guess that this reduces again the kinds of things you can express.
> (It's clear that to compare the expressiveness of statically and
> dynamically typed languages, the languages must be comparable in
> other respects than their type system. Staged compilation is the
> equivalent feature to 'eval'.)
If it is equivalent to eval (i.e., executed at runtime), and the static
type checker that is part of eval yields a type error, then you still
get a type error at runtime!
3rd European Lisp Workshop
July 3 - Nantes, France - co-located with ECOOP 2006
More information about the Python-list