Hi Larry!
On Sat, Jun 22, 2013 at 9:17 AM, Larry Evans
On 06/21/13 11:35, David Sankel wrote:
**semantics**:
template< typename left_type, typename right_type> struct either { // postcondition, is_left() either( left_type );
// postcondition, is_right() either( right_type );
bool is_left() const; bool is_right() const;
// postcondition, is_left() either & operator=( left_type );
// postcondition, is_right() either & operator=( right_type );
// precondition, is_left() left_type left();
// precondition, is_right() right_type right(); private: };
**uses**:
**Use 1**: Can be used as an alternative to exceptions or the (error codes+set reference idiom):
either
load_file(...); vs.
error_code load_file( file_id &, ... );
or
// throws std::exception file_id load_file(...);
Isn't this like haskell's either:
http://www.haskell.org/ghc/docs/6.12.2/html/libraries/base-4.2.0.1/Data-Eith...
Yes. The proposed nomenclature (either, left, right) is intentionally mimicking that of Haskell. I remember seeing elsewhere that haskell's either was mentioned as
a replacement for exceptions. I see if I can find it.
The Either Monad is commonly used for this purpose among others ( http://hackage.haskell.org/packages/archive/category-extras/0.53.1/doc/html/... ). David Sankel