Reference
Rustom Mody
rustompmody at gmail.com
Wed Mar 5 00:47:21 EST 2014
On Wednesday, March 5, 2014 10:36:37 AM UTC+5:30, Steven D'Aprano wrote:
> On Tue, 04 Mar 2014 19:36:38 -0800, Rustom Mody wrote:
> > Python's 'is' leaks
> > the machine abstraction. 'id' does it legitimately (somewhat), 'is' does
> > it illegitimately
> and then later in another post:
> > "is" in python leaks machine representations
> > into the otherwise clean HLL abstraction in python
> Rather than respond with incredulity and declare that you have no idea
> what you are talking about, I'll give you the benefit of the doubt, and
> accept the possibility that I am wrong, or possibly misunderstanding you.
Umm...
I guess my language was sloppy (a bit)
A machine is ultimately also an abstraction --
What is firmware/microcode? Is it a virtual machine? etc
Lets leave that however and just take 'machine' as a given.
Using machines as given, we build reprs for our (programmer's) data structures
So data structures are abstractions that have two 'faces' --
the machine-facing and the programmer-facing
For clarity of expression (and where you perhaps found me sloppy?? not sure...)
its best to call the machine-face 'a representation' and the programmer-face
'an abstraction'
Clearly this is a programmer-biased viewpoint. A hardware engineer would see
things differently. As would the user of the app the programmer programs.
Which is why to use the locution "is" without appropriate framing is philosopical
is a pretension to a 'God's-eye-view'.
If you are privy to such a viewpoint I'd be interested to know
But for the rest of us who are not, its good to remember there are only
perspectives no absolute truth.
That python is a hll means that machine reprs are intended to be abstracted
away. 'is' fails to do that -- proof of that being the discrepancy between
is and ==
> Can you explain what machine representations are leaked into Python by
> the is operator?
> Do you see this as an accident of implementation, a bug that might be
> fixed, or a misfeature that was deliberately designed?
> Can you elaborate on why id() is legitimate and "is" is not?
Let me talk of Lisp which is IMHO more philosophically sane.
Lisp has eq eql equal and a few type-specific others such as = for numbers
string-= for strings etc
eq is roughly python's 'is'
equal is roughl python's ==
The type-specific ones error out rather than returning false for out-of-bounds types.
So much for the technology
Now to the philosophy behind it:
Decide the viewpoint -- choose the appropriate equivence predicate
No claim even remotely to having a clue to metaphysical being that python's 'is' implies
More information about the Python-list
mailing list