#ifndef TINYSTL_FUNCTIONAL
#define TINYSTL_FUNCTIONAL

namespace std {
  
  template <class Arg, class Result>
  class unary_function {
  public:
    typedef Arg argument_type;
    typedef Result result_type;
  };
  
  template <class Arg1, class Arg2, class Result>
  class binary_function {
  public:
    typedef Arg1 first_argument_type;
    typedef Arg2 second_argument_type;
    typedef Result result_type;
  };

  
  // negate
  // plus
  // minus
  // multiplies
  // divides
  // modules
  // equal_to
  // not_equal_to
  
  template <class type>
  class less : public binary_function<type, type, bool>
  {
  public:
    bool operator() (const type& x, const type& y) const {
      return x < y;
    }
  };

  // greater
  // less_equal
  // greater_equal
  // logical_not
  // logical_and
  // logical_or
  
}

#endif
