code: function isValueLike(obj) {
  	var symbolValue;
  	if(isPrimitive(obj)) {
  		return true;
  	}
  	symbolValue = obj[canSymbol.for("can.isValueLike")];
  	if( typeof symbolValue !== "undefined") {
  		return symbolValue;
  	}
  	var value = obj[canSymbol.for("can.getValue")];
  	if(value !== undefined) {
  		return !!value;
  	}
  }
docs: @function can-reflect.isValueLike isValueLike
  @parent can-reflect/type
  @description Test if a value represents a single value (as opposed to several values).
  
  @signature `isValueLike(obj)`
  
  Return `true` if `obj` is a primitive or implements [can-symbol/symbols/getValue `@@can.getValue`],
  `false` otherwise.
  
  ```js
  canReflect.isValueLike(null); // -> true
  canReflect.isValueLike({}); // -> false
  canReflect.isValueLike(function() {}); // -> false
  canReflect.isValueLike({ [canSymbol.for("can.isValueLike")]: true}); // -> true
  canReflect.isValueLike({ [canSymbol.for("can.getValue")]: function() {} }); // -> true
  canReflect.isValueLike(canCompute()); // -> true
  canReflect.isValueLike(new DefineMap()); // -> false
  
  ```
  
  @param  {*}  obj maybe a primitive or an object that yields a value
  @return {Boolean}