Runs function with a newScope as its receiver and coerces its result to a Fact via factOf.
if function's result is neither a Fact nor a Struct.