|
|
|
|
|
by YouAreGreat
2744 days ago
|
|
> "A type system is a syntactic method for enforcing levels of abstraction in programs. " [1] > What syntactic methods are used in dynamically "typed" languages? Interesting. You may have unwittingly provided one of the best justifications for the term "dynamically typed" I've seen so far. That's because operations that violate a (safe) dynamically typed language's chosen set of abstractions (built using bits, church encoding, whatever) are syntactically inaccessible. |
|
They are semantically inaccessible, not syntactically inaccessible. These languages enforce abstractions by attaching meaning to the tags implicit to all values, and these meanings combined with the operation are what drive the next evaluation step, ie. success or raise error value. This is not what happens in typed languages.
Lexical scoping is an example of a syntactic method commonly employed by dynamically typed languages. It's possibly the only one.
Edit: I have both of Pierce's "Types and Programming Languages", and "Advanced Topics in Types and Programming Languages". "Dynamic typing" is mentioned exactly once, on page 2 of the first text where Pierce says:
> The word "static" is sometimes added explicitly [...] to distinguish the sorts of compile-time analysis we are considering here from the dynamic or latent typing found in languages such as Scheme, where runtime type tags are used to distinguish different kinds of structures on the heap. Terms like "dynamically typed" are arguably misnomers and should probably be replaced by "dynamically checked".