[Python-ideas] [Wild Idea] Static Ducks

Mathias Panzenböck grosser.meister.morti at gmx.net
Tue Sep 22 05:05:41 CEST 2009

On 09/22/2009 01:18 AM, Steven D'Aprano wrote:
> On Mon, 21 Sep 2009 11:55:57 pm MRAB wrote:
>> I know of one language which is weakly typed: BCPL. It's only type is
>> the bit pattern. It's the function or operator which interprets the
>> bits as representing a certain value.
> That would make BCPL an untyped language, like assembly. If the language 
> has no types, it can't be either weakly or strongly typed.
> Weak and string typing is a matter of degree. Most languages are weakly 
> typed to some extent, for instance Python will automatically coerce 
> various number types so you can add integers to floats etc., as will 
> Pascal. Numeric coercion is so widespread that most people consider it 
> an exception to weak typing: if all the language coerces are numeric 
> types, then it's still strongly typed.
> The classic test for weak typing versus strong typing is operations on 
> mixed integers and strings. Can you add or concatenate strings to 
> integers without an explicit conversion? Perl is weakly typed:
> $ perl -e 'print "2"+2; print "\n";'
> 4
> $ perl -e 'print "2".2; print "\n";'
> 22

Written from memory, C++:

#include <string>
#include <cstdio>

int operator + (const std::string& lhs, int rhs) {
	int i = 0;
	std::sscanf(lhs.c_str(), "%d", &i);
	return i + rhs;

int main() {
	std::string s = "2";
	std::printf("%d\n", s + 2);
	return 0;


I don't think this is a valid test to determine how a language is typed. Ok, C++
is more or less weakly typed (for other reasons), but I think you could write
something similar in C#, too. And C# is strongly typed.

> PHP and (I think) Javascript will do the same.
> It's been some years since I've used it, but I recall Apple's Hypertalk 
> behaved similarly. I think you could say 2&"2" (returns "22") and 2+"2" 
> (returns 4). Hypertalk is no longer supported, but I expect Apple's 
> current generation scripting language, AppleScript, would probably be 
> the same.

More information about the Python-ideas mailing list