/**
 * Returns the input array as a comma separated string.
 *
 * Does several things that Array.toString() doesn't do
 *  - Adds brackets around the array
 *  - Adds quotation marks around strings
 */
export function arrayToString<T>(a: T[]): string {
    const vals: any[] = [];
    for (let i = 0; i < a.length; ++i) {
        let elem: any = a[i];
        if (Array.isArray(elem)) {
            elem = arrayToString(elem);
        } else if (typeof elem === "string") {
            elem = `"${elem}"`;
        }
        vals.push(elem);
    }

    return `[${vals.join(", ")}]`;
}