Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

Re^11: 99 Problems in Perl6

by ambrus (Abbot)
on Dec 17, 2006 at 10:23 UTC ( #590292=note: print w/ replies, xml ) Need Help??


in reply to Re^10: 99 Problems in Perl6
in thread 99 Problems in Perl6

I agree with you here that ordered matching of sigs is convenient, even though it isn't as clear.

Standard ML guarantees ordered matching in functions (and also in lambdas and case expressions), so you can say this:

fun fact 0 = 1 | fact n = n * fact(n - 1);
(this is not the best way to define factorial though).

Prolog also matches the heads of predicate definitions in order.

Mathematica is a bit different. It matches argument lists to more specific patterns first, and when it is not clear which pattern is more specific, it matches them in order.


Comment on Re^11: 99 Problems in Perl6
Download Code
Re^12: 99 Problems in Perl6
by gaal (Parson) on Dec 17, 2006 at 18:04 UTC
    Similar syntax exists in Haskell and is called a guard.

    -- Here the |s should be read as one vertical line, like a mathematica +l function def. fact n | n == 0 = 1 | otherwise = n * fact (n - 1) -- Here's the same thing in different style, the same one as I'd used +earlier and -- called "declarative", sometimes called direct pattern matching, bec +ause each -- variant gets to bind whatever it managed to match. fact 0 = 1 fact n = n * fact (n - 1)

    There are plenty of non-syntactic variations on this theme. The scanl one is my favorite.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://590292]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (11)
As of 2014-10-25 14:52 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (145 votes), past polls