What is Expressiveness in a Computer Language
find at my.address.elsewhere
Tue Jun 20 17:53:19 CEST 2006
"Rob Thorpe" <robert.thorpe at antenova.com> writes:
> Andreas Rossberg wrote:
>> Rob Thorpe wrote:
>> >>>No, that isn't what I said. What I said was:
>> >>>"A language is latently typed if a value has a property - called it's
>> >>>type - attached to it, and given it's type it can only represent values
>> >>>defined by a certain class."
>> >>"it [= a value] [...] can [...] represent values"?
>> > ???
>> I just quoted, in condensed form, what you said above: namely, that a
>> value represents values - which I find a strange and circular definition.
> Yes, but the point is, as the other poster mentioned: values defined by
> a class.
> For example, in lisp:
> "xyz" is a string, #(1 2 3) is an array, '(1 2 3) is a list, 45 is a
> fixed-point number.
> Each item that can be stored has a type, no item can be stored without
> one. The types can be tested. Most dynamic typed languages are like
Your "types" are just predicates.
> Compare this to an untyped language where types cannot generally be
You mean there are no predicates in untyped languages?
>> They all have - the whole purpose of a type system is to ensure that any
>> expression of type T always evaluates to a value of type T.
> But it only gaurantees this because the variables themselves have a
> type, the values themselves do not.
Of course they do.
> Most of the time the fact that the
> variable they are held in has a type infers that the value does too.
> But the value itself has no type, in a C program for example I can take
> the value from some variable and recast it in any way I feel and the
> language cannot correct any errors I make because their is no
> information in the variable to indicate what type it is.
Casting in C takes values of one type to values of another type.
>> So when you
>> look at type systems formally then you certainly have to assign types to
>> values, otherwise you couldn't prove any useful property about those
>> systems (esp. soundness).
> Yes, but indirectly.
No, this is usually done very directly and very explicitly.
More information about the Python-list