What is Expressiveness in a Computer Language
david.nospam.hopwood at blueyonder.co.uk
Tue Jun 27 20:48:01 CEST 2006
> David Hopwood wrote:
>>>David Hopwood 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.
>>>So, how does this "dynamic" type work?
>>>It can't simply be the "any" type, because that type has no/few
>>>functions defined on it.
>>It isn't. From the abstract of the above paper:
>> [...] even in statically typed languages, there is often the need to
>> deal with data whose type cannot be determined at compile time. To handle
>> such situations safely, we propose to add a type Dynamic whose values are
>> pairs of a value v and a type tag T where v has the type denoted by T.
>> Instances of Dynamic are built with an explicit tagging construct and
>> inspected with a type safe typecase construct.
> Well, all this says is that the type "dynamic" is a way to explicitly
> indicate the inclusion of rtti. But that doesn't address my objection;
> if a typesafe typecase construct is required, it's not like using
> a dynamic language. They don't require typecase to inspect values
> before one can, say, invoke a function.
I was answering the question posed above: "are there some programs that
we can't write *at all* in a statically typed language...?"
>>"Gradual typing" as described in
>>another alternative. The difference between gradual typing and a
>>"dynamic" type is one of convenience rather than expressiveness --
>>gradual typing does not require explicit tagging and typecase constructs.
> Perhaps this is the one I should read; it sounds closer to what I'm
> talking about.
Right; convenience is obviously important, as well as expressiveness.
David Hopwood <david.nospam.hopwood at blueyonder.co.uk>
More information about the Python-list