[Haskell-cafe] Is there a notion for identity?
Robert Dockins
robdockins at fastmail.fm
Sun Jan 8 18:55:17 EST 2006
On Sunday 08 January 2006 06:43 am, Tim Walkenhorst wrote:
> {- Disclaimer: I'm rather new to Haskell and completely new to this board.
> I may not use the correct terminology in all cases, but I hope my
> intention becomes clear when you have a look at the code-snippets. -}
>
> Hey ho,
>
> Is there any way two find out whether two variables refer to the
> same cell? That is I'm looking for a notion of identity (compareable
> to == in Java) as opposed to equality (== in Haskell).
Another poster has already replied with a link to a long answer. The short
answer is "no, not really".
An attempted rationale:
The semantics of such an "identity" operator are unclear. The operator could
be a test for leibenz equality (ie, structural equality, ie replaceability in
all contexts), but such an operator cannot be decidable (proof due to
Church), so that wouldn't help in your situation anyway. The general
usefulness of such an operator is debatable.
We could instead provide an implementation-dependent operation that tests for
identical heap location, but such an operator would give different results
with different Haskell implementations and would be sensitive to
optimizations. That would either be a horribly broken operator or (to fix
the brokeness) greatly constrain the avaliable optimizations and
implementation strategies.
For the problem at hand (involving the STLC), you will not be able to type
omega because omega is a non-normalizing closed term and STLC has the strong
normalization property. You will have to move to a more expressive calculus
to type omega.
Rob Dockins
More information about the Haskell-Cafe
mailing list