On Mon, Mar 08, 2010 at 12:45:44PM -0800, Little Walker wrote:
: Hi there,
:
: I've been looking around to see if there's been any discussion of
: introducing functional programming-style pattern matching for method/
: function dispatch. Could someone point me to any such discussions?
Why settle for discussion when you can have specs? See the
Parameters and Arguments section of:
http://perlcabal.org/syn/S06.html
: I've seen that perl6 is taking on a lot of ideas from the functional
: world (lazy evaluation for instance). With multi-method dispatch on
: the agenda pattern matching seems inevitable but I haven't been able
: to find information about this or any related discussions.
:
: This is a contrived example of what I'm referring to:
:
: sub traverse([Leaf $a]) {
: # do something
: }
:
: sub traverse([Tree $left, Tree $right]) {
: traverse($left);
: traverse($right);
: }
:
: my $t = Tree(...);
: traverse($t);
That's almost exactly the example from:
http://perlcabal.org/syn/S06.html#Unpacking_tree_node_parameters
In fact, a grep of the specs for any of 'Tree', 'traverse', or
even 'left.*right' would have found it.
If any of you wants a greppable version of the specs, use svn to checkout
http://svn.pugscode.org/pugs
and then look in docs/Perl6/Spec.
Larry