2009-11-26 5 views
0

Je suis occupé passer par le très anémique projet de plain-pied à F # fournies par MS dans VS 2010 Beta 2, et suis tombé sur quelque chose qui a besoin d'une explication:Comment fonctionne l'instruction de correspondance dans F #?

let rec SumList xs = 
    match xs with 
    | [] -> 0 
    | y::ys -> y + SumList ys 

Je suppose match quelque chose comme un interrupteur d'autres langues, où une liste vide donne une valeur de retour de 0, mais le second cas me fascine. Cela indique-t-il à 'runtime | interpretor' d'évaluer l'argument match comme y cons 0s, ou plutôt comme 'si l'argument est de la forme y cons ys', se répète avec y et ys?

Répondre

4

Vous pouvez trouver la discussion ici

Explaining pattern matching vs switch

utile. Je pense qu'il est difficile de résumer le fonctionnement de l'appariement de modèles, mais il s'agit à la fois d'une construction de contrôle-flux (à la fois) et d'une construction de liaison.

1

Une correspondance de modèle n'est pas comme une instruction switch: switch fonctionne sur la valeur d'une expression, alors que match peut également fonctionner sur la structure de l'expression.

+1

Je dirais que cela ressemble à une instruction switch qui peut également fonctionner sur la structure de l'expression ... – phoebus

+0

Laisser la valeur de l'expression 'switch' être alors l'expression booléenne 'x est de structure y'. – ProfK

Questions connexes