Example #1
0
export const toString = (list: List) => {
  if (!isList(list)) {
    if (pairs.isPair(list)) {
      return `pair: ${pairs.toString(list)}`;
    } else if (typeof list === 'object') {
      return JSON.stringify(list, null, 2);
    }
    return list;
  }

  if (isEmpty(list)) {
    return '()';
  }

  const rec = (p) => {
    const first = head(p);
    const rest = tail(p);
    if (isEmpty(rest)) {
      return toString(first);
    }

    return `${toString(first)}, ${rec(rest)}`;
  };

  return `(${rec(list)})`;
};
Example #2
0
export const isList = (mix: any) => {
  if (mix === null) {
    return true;
  }
  if (pairs.isPair(mix)) {
    return isList(pairs.cdr(mix));
  }
  return false;
};
Example #3
0
export const checkList = (list: ?List) => {
  if (!isList(list)) {
    let value;
    if (pairs.isPair(list)) {
      value = `pair: ${pairs.toString(list)}`;
    } else if (typeof list === 'object') {
      value = JSON.stringify(list, null, 2);
    } else {
      value = String(list);
    }
    throw new Error(`Argument must be list, but it was '${value}'`);
  }
};
Example #4
0
export const hasChildren = element => isPair(cdr(element));