Monad Transformers y GeneralizedNewtypeDeriving

Monad Transformers y GeneralizedNewtypeDeriving

de Rafael Agustin Castelli Ottati -
Número de respuestas: 2

Buenas, tengo unas consultas respecto a Monad Transformers:

1) Si tenemos (como en el práctico 3) un tipo type M a = ExceptT Error (ReaderT Env Identity) a, por la libreria de MTL, el tipo es inmediatamente una instancia de Monad (y Applicative, Functor), MonadReader, MonadError, pero en práctico se nos puso "No instancia explícitamente en la mónada pedida.". Cuando tenemos un ejercicio (en el parcial) que se pide definir un tipo como el anterior, podemos delegar la carga a la librería MTL o tenemos que instanciar manualmente las clases.

2) En el texto de Monad Transformers, cuando se utiliza un tipo newtype M a = ReaderT AppConfig (StateT AppState IO) a, se deriva automáticamente las instancias correspondientes utilizando MTL y la extensión GeneralizedNewtypeDeriving. En la prueba, tendríamos permitido utilizar dicha extensión?

Desde ya muchas gracias,

Saludos,

Rafael.

En respuesta a Rafael Agustin Castelli Ottati

Re: Monad Transformers y GeneralizedNewtypeDeriving

de Alberto Pardo -
Hola,

En lo que respecta a los ejercicios del curso, la idea de estos ejercicios es que cuando instancien lo hagan en forma sistemática (o sea, a mano) y no dejen el peso de eso a las extensiones de Haskell (que además no las dimos ni mencionamos). Es una forma de evaluar que entendieron la construcción de la mónada mediante monad transformers.

Luego en la práctica, por supuesto que toda facilidad que de el lenguaje es bienvenida.

Saludos,
Alberto
En respuesta a Alberto Pardo

Re: Monad Transformers y GeneralizedNewtypeDeriving

de Rafael Agustin Castelli Ottati -
Hola, muchas gracias Alberto.

Lo que no me termina de quedar claro entonces, es en el caso (por ejemplo) de type M a = ExceptT Error (ReaderT Env Identity) a que debería instanciar para hacer correctamente el ejercicio.

Saludos,
Rafael.