Lo maravilloso de Haskell. El tipo de una función casi dicta su implementación. Ese es el caso de éste, pero ... mi cerebro no está envolviendo alrededor de la función anidada cosa aquí:Cómo implementar esta función en Haskell
mkDyn :: (Typeable a) => ((a -> IO()) -> IO()) -> ((Dynamic -> IO()) -> IO())
La única pregunta es cómo manejar el control de errores en la llamada fromDynamic que será requerida, pero ... puedo lidiar con eso una vez que tenga el resto resuelto. Supongo que tendrá que haber algo como lo siguiente en alguna parte. Pero parece que no puedo descifrar la envoltura lambda.
case fromDynamic x of
Just x -> f x
Nothing -> undefined -- TODO
Guau, ni siquiera sabía que Haskell tenía soporte de tipo dinámico, y menos aún que estaba [disponible en la base] (http://hackage.haskell.org/packages/archive/base/latest/doc/html/ Data-Dynamic.html). Aprenda algo nuevo cada día. –
@Joey IIRC incluso hay una biblioteca para escribir código de estilo imperativo con operadores de asignación fácil, pero olvidé dónde. Creo que fue mencionado una vez en Planet Haskell. – fuz