Probar si un valor ha sido evaluado en forma normal de cabeza débil

En Haskell, ¿es posible probar si un valor ha sido evaluado en forma normal de cabeza débil? Si ya existe una función, esperaría que tuviera una firma como

evaluated :: a -> IO Bool

Hay algunos lugares donde vive una funcionalidad similar.

A respuesta previa me presentó a la:sprint Comando ghci, que imprimirá solo la parte de un valor que ya se ha forzado a la forma normal de la cabeza débil.:sprint puede observar si un valor ha sido evaluado o no:

> let l = ['a'..]
> :sprint l
l = _
> head l
'a'
> :sprint l
l = 'a' : _

Es posible enIO para examinar propiedades que de otro modo estarían fuera de los límites. Por ejemplo, es posible comparar enIO para ver si dos valores provienen de la misma declaración. Esto es proporcionado por elStableNamepecadoSystem.Mem.StableName y usado famoso para resolver el problema de compartir observable enReify de datos. El relacionadoStablePtr no proporciona un mecanismo para verificar si el valor referenciado está en forma normal de cabeza débil.

Respuestas a la pregunta(4)

Su respuesta a la pregunta