==============================================================================
               Release of version 1.10 of Class::Multimethods
==============================================================================

DESCRIPTION

NAME
       Class::Multimethods - Support multimethods and subroutine
                             overloading in Perl

SYNOPSIS

       # ONLY WORKS UNDER 5.005 OR LATER (NEEDS qr//)

             use 5.005;

       # IMPORT THE multimethod DECLARATION SUB...

             use Class::Multimethods;

       # DECLARE VARIOUS MULTIMETHODS CALLED find...

       # 1. DO THIS IF find IS CALLED WITH A Container REF AND A Query REF...

             multimethod find => (Container, Query)
                              => sub { $_[0]->findquery($_[1]) };

       # 2. DO THIS IF find IS CALLED WITH A Container REF AND A Sample REF...

             multimethod find => (Container, Sample)
                              => sub { $_[0]->findlike($_[1]) };

       # 3. DO THIS IF find IS CALLED WITH AN Index REF AND A Word REF...

             multimethod find => (Index, Word)
                              => sub { $_[0]->lookup_word($_[1]) };

       # 4. DO THIS IF find IS CALLED WITH AN Index REF AND A qr// PATTERN

             multimethod find => (Index, Regexp)
                              => sub { $_[0]->lookup_rx($_[1]) };

       # 5. DO THIS IF find IS CALLED WITH AN Index REF AND A NUMERIC SCALAR

             multimethod find => (Index, '#')
                              => sub { $_[0]->lookup_elem($_[1]) };

       # 6. DO THIS IF find IS CALLED WITH AN Index REF AND
       #    A NON-NUMERIC SCALAR

             multimethod find => (Index, '$')
                              => sub { $_[0]->lookup_str($_[1]) };

       # 7. DO THIS IF find IS CALLED WITH AN Index REF AND AN UNBLESSED
       #    ARRAY REF (NOTE THE RECURSIVE CALL TO THE find MULTIMETHOD)

             multimethod find => (Index, ARRAY)
                              => sub { map { find($_[0],$_) } @{$_[1]} };

       # SET UP SOME OBJECTS...

             my $cntr = new Container ('./datafile');
             my $indx = $cntr->get_index();

       # ...AND SOME INHERITANCE...

             @BadWord::ISA = qw( Word );
             my $badword = new BadWord("fubar");

       # ...AND EXERCISE THEM...

             print find($cntr, new Query('cpan OR Perl'));           # CALLS 1.
             print find($cntr, new Example('by a committee'));       # CALLS 2.

             print find($indx, new Word('sugar'));                   # CALLS 3.
             print find($indx, $badword);                            # CALLS 3.
             print find($indx, qr/another brick in the Wall/);       # CALLS 4.
             print find($indx, 7);                                   # CALLS 5.
             print find($indx, 'But don't do that.');                # CALLS 6.
             print find($indx, [1,"one"]);                           # CALLS 7,
                                                                     # THEN 5,
                                                                     # THEN 6.

INSTALLATION

   It's all pure Perl, so just put the .pm file in its appropriate
   local Perl subdirectory.


AUTHOR

   Damian Conway ([email protected])


COPYRIGHT

      Copyright (c) 1999, Damian Conway. All Rights Reserved.
    This module is free software. It may be used, redistributed
        and/or modified under the same terms as Perl itself.


==============================================================================

CHANGES IN VERSION 1.10


       - Fixed a nasty bug in the import method (thanks Larry)

       - Added constraints to indicate that the module
         doesn't run on Perls earlier than 5.005

       - Added &resolve_ambiguous to allow handlers to be
         registered for multimethod calls which could be
         equally well be disptched to two or more variants

       - Added &resolve_no_match to allow handlers to be
         registered for multimethod calls which cannot be
         dispatched to any variant.

       - Documented the syntactic vinegar needed to run under
         'use string'


==============================================================================

AVAILABILITY

Class::Multimethods has been uploaded to the CPAN
and is also available from:

       http://www.csse.monash.edu.au/~damian/CPAN/Class-Multimethods.tar.gz

==============================================================================