JSFiddle - React, Tailwind, and code Playground

HTML

<pre id="logger"></pre>

JavaScript

var log = '';

function * gen() { log += 'X'; yield 0; log += 'Y'; }

function a() { log += 'A'; }
function b() { log += 'B'; return gen(); }
function c() { log += 'C'; }

function fn() {
  var args = [];
  for (var i = 0; i < arguments.length; ++i) {
    args.push(arguments[i]);
  }
  return args;
}

function atostr(O) {
  return '[' + O.reduce(function(prev, curr) {
    if (prev) prev += ', ';
    return prev + String(curr);
  }, '') + ']';
}

function $log(O) {
  if (Array.isArray(O)) {
    O = atostr(O);
  }
  logger.appendChild(document.createTextNode(O + "\n"));
}

$log(fn(a(), ...b(), c()));
$log(log);