[Python-ideas] Python Users Aren't Perfect

Stephen J. Turnbull stephen at xemacs.org
Tue Dec 13 03:44:29 CET 2011

Greg Ewing writes:
 > Masklinn wrote:
 > > FWIW, Haskell does not have a literal singleton (the standard defines 
 > > "unit" `()` and 2-tuple through 15-tuple)
 > That's because, due to its static typing, there is no
 > reason you would ever need to use a 1-tuple rather than
 > a bare value. We're not that lucky in Python, though.

I think you have misstated your point?  That's not due to static
typing, that's because you may *always* identify 1-factor products
with the only factor, and Haskell made a deliberate decision to
consistently represent the isomorphism class by the factor rather than
the product.  Eg, Python uses the same strategy for characters and
strings (characters as a category are isomorphic to one-element
strings), but chose a different representative (the one-element string
rather than the character).

As for Python's relative lack of luck, I think that's unlikely to be
the reason why things are as they are.  I'm pretty sure that Python's
omission of character objects was deliberate<wink/>.  I think it was
the right choice, given that (1) despite category theory, I believe we
think of tuples as composite objects (at least I do), but strings seem
to be more "monolithic" in some sense, and (2) pretty much all
languages have chosen to leave identifiers unmarked (I guess Perl and
many template languages should be considered exceptions), and mark
strings and characters (often both with quotation marks, sometimes
characters with a prefix) -- may as well go with the familiar if
there's no good reason otherwise.

More information about the Python-ideas mailing list