index.js
function defaults(defs,opts) {
  if (!opts)
    opts = {}
  if (opts.context == null)
    opts.context = true;
  if (opts.coerce == null)
    opts.coerce = true;
  completeMonad(defs);
  if (opts.control === "token")
    defs = M.addControlByToken(defs);
  if (opts.wrap)
    defs = M.wrap(defs,opts.wrap);
  if (opts.coerce)
    defs = M.addCoerce(defs);
  if (opts.context)
    defs = M.addContext(defs, opts.context === "run");
  if (opts.wrap)
    M.completePrototype(defs,opts.wrap.prototype);
  return defs;
}
function defaults(defs,opts) {
  if (!opts)
    opts = {}
  if (opts.context == null)
    opts.context = true;
  if (opts.coerce == null)
    opts.coerce = true;
  completeMonad(defs);
  if (opts.control === "token")
    defs = M.addControlByToken(defs);
  if (opts.wrap)
    defs = M.wrap(defs,opts.wrap);
  if (opts.coerce)
    defs = M.addCoerce(defs);
  if (opts.context)
    defs = M.addContext(defs, opts.context === "run");
  if (opts.wrap)
    M.completePrototype(defs,opts.wrap.prototype);
  return defs;
}
function defaults ( defs , opts ) { if ( ! opts ) opts = { } if ( opts . context == null ) opts . context = true ; if ( opts . coerce == null ) opts . coerce = true ; completeMonad ( defs ) ; if ( opts . control === "token" ) defs = M . addControlByToken ( defs ) ; if ( opts . wrap ) defs = M . wrap ( defs , opts . wrap ) ; if ( opts . coerce ) defs = M . addCoerce ( defs ) ; if ( opts . context ) defs = M . addContext ( defs , opts . context === "run" ) ; if ( opts . wrap ) M . completePrototype ( defs , opts . wrap . prototype ) ; return defs ; }
Runs definitions transformations based on specified set of options.

Options:
* wrap - constructor function used for wrapped value,
it should construct objects with inner field
* context - boolean or "run" string for only wrapping run method,
default is true
* coerce - boolean for adding coercions to functions returning
monadic values, default is true
* control - string "token" for adding control operators implementation
using special token passing
@function M.defaults
@param {MonadDict} inner original monad definition
@param {Object} options
@return {MonadDict}
Runs definitions transformations based on specified set of options .