• [^] # Re: Dommage...

    Posté par . En réponse à la dépêche OCaml 3.10.0 est sorti. Évalué à 3.

    Je ne sais pas ce qu'est l'opérateur @@.

    Pour le _ -> 0, c'est quelque chose de très puissant.

    En OCAML, on peut faire de la programmation par filtrage (i.e. a coup de switch mais en beaucoup plus puissant).

    Pour additionner les éléments d'une liste, on peut faire de la façon suivante:

    let rec glop l=match l with
    [] -> 0
    | x::l2 -> 1+(glop l2)

    le _ sert quand on ne moque du reste. Par exemple, pour tester si une liste ne contient qu'un seul élément (exemple débile, je sais), on peut écrire:

    let foo l = match l with
    _::[] -> true
    | _ -> false

    Dans l'exemple de la matrice, ce mécanisme est utilisé avec un mécanisme de récupérations d'erreurs.

    Si on exécute un programme qui peut lancer des erreurs, on peut les rattraper à coup de try ... with

    try
    mon_code_principal
    with
    qu'est-ce que je fais en cas d'erreur

    comme « mon_code_principal » peut lancer plusieurs type d'erreur, la section with
    fait du filtrage sur le type d'erreur

    try
    mon_code
    with
    division_by_zero -> print "division par zéro = la tête à Toto"
    | parse_error -> print "apprend à écrire banane !"

    Dans le coup de la matrice, on a besoin de calculer la taille de la matrice. Il peut y avoir un problème avec une matrice vide et seulement dans ce cas. On fait donc un

    try
    length matb.(0)
    with
    _ -> 0

    C'est tout.