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 that. Compare this to an untyped language where types cannot generally be tested. > >>A (static) type system assigns types to (all) *expressions*. > > > > That's right most of the time yes, I probably should have said > > expressions. Though I can think of static typed languages where the > > resulting type of an expression depends on the type of the variable it > > is being assigned to. > > Yes, but that's no contradiction. A type system does not necessarily > assign *unique* types to individual expressions (consider overloading, > subtyping, polymorphism, etc). That's a fair way of looking at it. > > Well I haven't programmed in any statically typed language where values > > have types themselves. > > 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. 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. > 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. -- http://mail.python.org/mailman/listinfo/python-list