What is Expressiveness in a Computer Language

Andreas Rossberg rossberg at ps.uni-sb.de
Thu Jun 22 05:51:18 EDT 2006


Rob Warnock wrote:
> 
> Here's what the Scheme Standard has to say:
> 
>     http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-4.html
>     1.1  Semantics
>     ...
>     Scheme has latent as opposed to manifest types. Types are assoc-
>     iated with values (also called objects) rather than with variables.
>     (Some authors refer to languages with latent types as weakly typed
>     or dynamically typed languages.) Other languages with latent types
>     are APL, Snobol, and other dialects of Lisp. Languages with manifest
>     types (sometimes referred to as strongly typed or statically typed
>     languages) include Algol 60, Pascal, and C.

Maybe this is the original source of the myth that static typing is all 
about assigning types to variables...

With all my respect to the Scheme people, I'm afraid this paragraph is 
pretty off, no matter where you stand. Besides the issue just mentioned 
it equates "manifest" with static types. I understand "manifest" to mean 
"explicit in code", which of course is nonsense - static typing does not 
require explicit types. Also, I never heard "weakly typed" used in the 
way they suggest - in my book, C is a weakly typed language (= typed, 
but grossly unsound).

> To me, the word "latent" means that when handed a value of unknown type
> at runtime, I can look at it or perform TYPE-OF on it or TYPECASE or
> something and thereby discover its actual type at the moment[1], whereas
> "manifest" means that types[2] are lexically apparent in the code.

Mh, I'd say typecase is actually a form of reflection, which is yet a 
different issue. Moreover, there are statically typed languages with 
typecase (e.g. Modula-3, and several more modern ones) or related 
constructs (consider instanceof).

- Andreas



More information about the Python-list mailing list