<br><br><div class="gmail_quote">2009/9/22 Masklinn <span dir="ltr"><<a href="mailto:masklinn@masklinn.net">masklinn@masklinn.net</a>></span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im">On 22 Sep 2009, at 17:46 , Steven D'Aprano wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On Wed, 23 Sep 2009 12:25:32 am Masklinn wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On 22 Sep 2009, at 15:16 , Steven D'Aprano wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On Tue, 22 Sep 2009 01:05:41 pm Mathias Panzenböck wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
I don't think this is a valid test to determine how a language is<br>
typed. Ok, C++ is more or less weakly typed (for other reasons),<br>
but I think you could write something similar in C#, too. And C#<br>
is strongly typed.<br>
</blockquote>
<br>
Weak and strong typing are a matter of degree -- there's no<br>
definitive test for "weak" vs "strong" typing, only degrees of<br>
weakness. The classic test is whether you can add strings and ints<br>
together, but of course that's only one possible test out of many.<br>
</blockquote>
<br>
And it's a pretty bad one to boot: both Java and C# allow adding<br>
strings and ints (whether it's `3 + "5"` or `"5" + 3`) (in fact they<br>
allow adding *anything* to a string), but the operation is well<br>
defined: convert any non-string involved to a string (via #toString<br>
()/.ToString()) and concatenate.<br>
</blockquote>
<br>
I don't see why you say it's a bad test. To me, it's a good test, and<br>
Java and C# pass it.<br>
<br>
</blockquote></div>
Uh no, by your criterion they fail it: both java and C# do add strings and integers without peeping.</blockquote><div><br>C# will not allow you to add strings to numbers, this is nonsense. If you call ToString() then this is an explicit operation to produce a string representation - and it is this string that you add. It is *not* at all the same as adding arbitrary objects on strings. You can't compile a C# program that attempts to add strings and numbers.<br>
<br>I'm also pretty sure you can't override the default behavior on integers etc (C# does have operator overloading but doesn't allow you to redefine operators on the fundamental types - Java doesn't even have operator overloading).<br>
<br>Michael<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="im"><br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
If you're only criterion is that an operation is well-defined,<br>
then "weak typing" becomes meaningless: I could define addition of<br>
dicts and strings to be the sum of the length of the dict with the<br>
number of hyphens in the string, and declare that<br>
<br>
{'foo':'a', 'bar':'b'} + "12-34-56-78-90"<br>
<br>
returns 6, and by your criterion my language would be strongly typed. I<br>
think that makes a mockery of the whole concept.<br>
</blockquote></div>
I don't think I defined any criterion of strong/weak typing. As far as I'm concerned, and as I've already mentioned in this thread, the whole weak/strong axis is meaningless and laughable.<div class="im"><br>

<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
This heuristic is not arbitrary.<br>
</blockquote></div>
Of course it is.<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Automatically converting ints to floats<br>
is mathematically reasonable, because we consider e.g. 3 and 3.0 to be<br>
the same number.<br>
</blockquote></div>
Do we? Given 3/2 and 3.0/2 don't necessarily give the same answer (some languages don't even consider the first operation valid), I'm not sure we do.<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Perl is weakly typed but it's very hard to cause it to crash,<br>
</blockquote></div>
See the link I previously gave, you might consider Perl weakly typed, not everybody does.<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
while C++ is strongly typed but easy to cause it to core-dump.<br>
</blockquote></div>
See my response to your previous declaration.<div><div></div><div class="h5"><br>
<br>
_______________________________________________<br>
Python-ideas mailing list<br>
<a href="mailto:Python-ideas@python.org" target="_blank">Python-ideas@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/python-ideas" target="_blank">http://mail.python.org/mailman/listinfo/python-ideas</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><a href="http://www.ironpythoninaction.com/">http://www.ironpythoninaction.com/</a><br><br><br>