sig
  type 'b reader = READER
  type (_, _) Generic_util.App.T.app +=
      Reader :
        ('b -> 'a) -> ('a, 'b Generic_util_monad.Reader.reader)
                      Generic_util.App.T.app
  val run_reader :
    ('a, 'b Generic_util_monad.Reader.reader) Generic_util.App.T.app ->
    'b -> 'a
  val reader : 'a Generic_util_monad.Reader.reader Generic_util_monad.monad
  val ask : ('a, 'a Generic_util_monad.Reader.reader) Generic_util.App.T.app
  val local :
    ('a -> 'b) ->
    ('c, 'b Generic_util_monad.Reader.reader) Generic_util.App.T.app ->
    ('c, 'a Generic_util_monad.Reader.reader) Generic_util.App.T.app
end