lib/MissMatch.js
function parseGeneric(AST,type) {
    var node = newNode(next(),AST);

    // Parse literal lists, e.g. s("a", "b", ...)
    if(peek() === '(') {
      switch(type) {
        case "s":
          parseLiteralList(node.nodes, parseStringLiteral);
          break;
        case "n":
          parseLiteralList(node.nodes, parseNumericLiteral);
          break;
        case "b":
          parseLiteralList(node.nodes, parseBooleanLiteral);
          break;
        case "d":
          parseLiteralList(node.nodes, parseDateLiteral);
          break;        
      }

      node.type = '||';
      consume(); // ')'
    }

    if(peek() === '@') { parseBinding(node); }
  }
function parseGeneric(AST,type) {
    var node = newNode(next(),AST);

    // Parse literal lists, e.g. s("a", "b", ...)
    if(peek() === '(') {
      switch(type) {
        case "s":
          parseLiteralList(node.nodes, parseStringLiteral);
          break;
        case "n":
          parseLiteralList(node.nodes, parseNumericLiteral);
          break;
        case "b":
          parseLiteralList(node.nodes, parseBooleanLiteral);
          break;
        case "d":
          parseLiteralList(node.nodes, parseDateLiteral);
          break;        
      }

      node.type = '||';
      consume(); // ')'
    }

    if(peek() === '@') { parseBinding(node); }
  }
Matches any of (a,o,n,s,b,f,d,r,_)