Estaba tratando de usar la actualización de registros para un registro existencial cuando me encontré con un error. Un Google rápido me llevó a feature request #2595, que lo muestra como implementado para GHC en la versión 6.8.3. Estoy usando 6.10.4, así que yo creo que debería funcionar, pero el código de ejemplo de la solicitud de función:Haskell: Actualización de registros para tipos existenciales
{-# LANGUAGE ExistentialQuantification,Rank2Types #-}
module Foo where
data Foo = forall a . Foo { foo :: a -> a, bar :: Int }
x :: Foo
x = Foo { foo = id, bar = 3 }
f :: Foo -> Foo
f rec = rec { foo = id }
g :: Foo -> Foo
g rec = rec { bar = 3 }
producir los mismos errores que se quejó de la solicitud de función:
test.hs:10:8:
Record update for the non-Haskell-98 data type `Foo' is not (yet) supported
Use pattern-matching instead
In the expression: rec {foo = id}
In the definition of `f': f rec = rec {foo = id}
test.hs:13:8:
Record update for the non-Haskell-98 data type `Foo' is not (yet) supported
Use pattern-matching instead
In the expression: rec {bar = 3}
In the definition of `g': g rec = rec {bar = 3}
¿Se eliminó esta función de forma consciente en algún momento o debo presentar un informe de error?
Ah. Gracias por salvarme de cometer un error tonto suponiendo que debería arreglarse en mi versión. Desactivado para actualizar GHC! – rampion
Ah, mensaje de error nuevo y diferente, tal como lo dijo. Pero uno que piensa que estoy haciendo algo mal, no es que sea imposible. – rampion