code: function (env) {
          var args = this.args.map(function (a) { return a.eval(env) });
  
          if (this.name in tree.functions) { // 1.
              try {
                  return tree.functions[this.name].apply(tree.functions, args);
              } catch (e) {
                  throw { type: e.type || "Runtime",
                          message: "error evaluating function `" + this.name + "`" +
                                   (e.message ? ': ' + e.message : ''),
                          index: this.index, filename: this.filename };
              }
          } else { // 2.
              return new(tree.Anonymous)(this.name +
                     "(" + args.map(function (a) { return a.toCSS(env) }).join(', ') + ")");
          }
      }
docs: When evaluating a function call, we either find the function in `tree.functions` [1], in which case we call it, passing the  evaluated arguments, or we simply print it out as it appeared originally [2].  The *functions.js* file contains the built-in functions.  The reason why we evaluate the arguments, is in the case where we try to pass a variable to a function, like: `saturate(@color)`. The function should receive the value, not the variable.