function F(type, term) {
  let original = term;
  if (term && !term.__meta) {
    term = type.wrap ? type.wrap(term) : term;
    term.__meta = {};
    term.__name = function(name) {
      term.__meta.name = name;
      return term;
    };
    term.__desc = function(desc) {
      term.__meta.desc = desc;
      return term;
    };
    if (term.__meta) {
      term.__meta.term = original;
      term.__meta.name = "anon";
      term.__meta.desc = "no description";
    };
  };
  F.check(type, term);
  return term;
}
function F(type, term) {
  let original = term;
  if (term && !term.__meta) {
    term = type.wrap ? type.wrap(term) : term;
    term.__meta = {};
    term.__name = function(name) {
      term.__meta.name = name;
      return term;
    };
    term.__desc = function(desc) {
      term.__meta.desc = desc;
      return term;
    };
    if (term.__meta) {
      term.__meta.term = original;
      term.__meta.name = "anon";
      term.__meta.desc = "no description";
    };
  };
  F.check(type, term);
  return term;
}
function F ( type , term ) { let original = term ; if ( term && ! term . __meta ) { term = type . wrap ? type . wrap ( term ) : term ; term . __meta = { } ; term . __name = function ( name ) { term . __meta . name = name ; return term ; } ; term . __desc = function ( desc ) { term . __meta . desc = desc ; return term ; } ; if ( term . __meta ) { term . __meta . term = original ; term . __meta . name = "anon" ; term . __meta . desc = "no description" ; } ; } ; F . check ( type , term ) ; return term ; }
Performs static type checking, enables dynamic type checks.
Performs static type checking enables dynamic type checks .