¿Hay alguna noción de calidad de puntero en Haskell? == requiere que las cosas deriven Eq, y tengo algo que contiene a (Valor -> Valor IO), y ni -> ni IO derivan Eq.Pointer equality in Haskell?
EDITAR: Estoy creando un intérprete para otro idioma que tiene tiene igualdad de puntero, así que estoy tratando de modelar este comportamiento al tiempo que puedo usar las funciones de Haskell para modelar cierres.
EDIT: Ejemplo: Quiero una función special
que hacer esto:
> let x a = a * 2
> let y = x
> special x y
True
> let z a = a * 2
> special x z
False
Solo quiero ver si las dos funciones que obtengo son de hecho la misma función. Estoy intentando crear un intérprete para otro idioma que tenga igualdad de puntero, y quiero imitar este comportamiento. – Claudiu
Pero, ¿qué significa exactamente la misma función? (\ x -> x) es la misma función que (\ x -> x). La misma función que ((\ x y -> y) x), etc. Creo que lo que necesita es un dato adicional para rastrear la "dirección" de una función en su idioma interpretado. Una mónada que modele a a -> (Int, a) coalgebra podría estar en orden. – Apocalisp
Tristemente tenemos el caso evil = ID {unId = const undefined} también, por lo que su ejemplo no es 100% verdadero. Esos molestos fondos. :) – Tirpen