package tezos-protocol-alpha
Install
    
    dune-project
 Dependency
Authors
Maintainers
Sources
sha256=dbc3b675aee59c2c574e5d0a771193a2ecfca31e7a5bc5aed66598080596ce1c
    
    
  sha512=b97ed762b9d24744305c358af0d20f394376b64bfdd758dd4a81775326caf445caa57c4f6445da3dd6468ff492de18e4c14af6f374dfcbb7e4d64b7b720e5e2a
    
    
  doc/tezos_raw_protocol_alpha/Tezos_raw_protocol_alpha/Gas_monad/index.html
Module Tezos_raw_protocol_alpha.Gas_monadSource
This monad combines:
- a state monad where the state is the context
- two levels of error monad to distinguish gas exhaustion from other errors
It is useful for backtracking on type checking errors without backtracking the consumed gas.
Alias of ('a, 'trace) t to avoid confusion when the module is open
map f m maps over successful results of m using f.
bind m f binds successful results of m and feeds it to f.
val bind_recover : 
  ('a, 'trace) t ->
  (('a, 'trace) Tezos_protocol_environment_alpha.Pervasives.result ->
    ('b, 'trace') t) ->
  ('b, 'trace') tbind_recover m f binds the result of m and feeds it to f. It's another variant of bind that allows recovery from inner errors.
val of_result : 
  ('a, 'trace) Tezos_protocol_environment_alpha.Pervasives.result ->
  ('a, 'trace) tof_result r is a gas-free embedding of the result r into the gas monad.
consume_gas c consumes c amounts of gas. It's a wrapper around Gas.consume. If that fails, the whole computation within the gas-monad returns an error. See the Alpha_context.Gas module for details.
val run : 
  Alpha_context.context ->
  ('a, 'trace) t ->
  (('a, 'trace) Tezos_protocol_environment_alpha.Pervasives.result
   * Alpha_context.context)
    Tezos_protocol_environment_alpha.Error_monad.tzresultrun ctxt m runs m using the given context and returns the result along with the new context with updated gas. The given context has unlimited mode enabled, through Gas.set_unlimited, no gas is consumed.
val record_trace_eval : 
  error_details:('error_context, 'error_trace) Script_tc_errors.error_details ->
  ('error_context -> Tezos_protocol_environment_alpha.Error_monad.error) ->
  ('a, 'error_trace) t ->
  ('a, 'error_trace) trecord_trace_level ~error_details f m returns a new gas-monad value that when run, records trace levels using f. This function has no effect in the case of a gas-exhaustion error or if error_details is Fast.