anchor.diff:   *     * Binary Operators (see [BinaryOperator])
    * * Functions (see [MathFunction])
    * 
  - * Default functions are [Exponential], [Log], [Ln], nth-[Root] and [Sqrt].
  + *     * Pre-defined Functions (see [DefaultFunction])
  + *     * Custom Functions (see [CustomFunction])
  + * 
  + * Pre-defined functions are [Exponential], [Log], [Ln], nth-[Root], [Sqrt],
  + * [Sin] and [Cos].
    */
   abstract class Expression {
     
  +  // Basic operations.
     Expression operator+(Expression exp) => new Plus(this, exp);
     Expression operator-(Expression exp) => new Minus(this, exp);
     Expression operator*(Expression exp) => new Times(this, exp);
  
positive.code:     }
      
      return new Minus(firstOp, secondOp);
      
      //TODO -a + b = b - a
      //TODO -a - b = - (a + b)
    }
  
negative.code:   num evaluate() => value; //TODO whis will break
    
    Expression derive(String toVar) => new Number(0); //TODO this is wrong
    
    //TODO constant / getConstant
  }
  
  void main() {
  