Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro Nicolas Vallée
    Ingénieur d'études
    Inscrit en
    décembre 2005
    Messages
    10 220
    Détails du profil
    Informations personnelles :
    Nom : Homme Nicolas Vallée
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : décembre 2005
    Messages : 10 220
    Points : 17 577
    Points
    17 577

    Par défaut quid de la visibilité des exceptions

    Salut,



    M'attendant à retrouver quelques fonctionnalités des langages classiques de .Net sous F#, je me demandais comment l'on pouvait signaler rapidement toutes les exceptions émises par une fonction


    parce qu'a priori, en OCaml la "solution" est des plus alambiquées
    http://till-varoquaux.blogspot.com/2...g-nothing.html
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  2. #2
    LLB
    LLB est déconnecté
    Membre Expert
    Inscrit en
    mars 2002
    Messages
    962
    Détails du profil
    Informations forums :
    Inscription : mars 2002
    Messages : 962
    Points : 1 263
    Points
    1 263

    Par défaut

    Citation Envoyé par gorgonite Voir le message
    M'attendant à retrouver quelques fonctionnalités des langages classiques de .Net sous F#
    C'est-à-dire ? Comment ferais-tu cela en C# ?

    Pour faire apparaître les exceptions dans le type de la fonction, il faut bidouiller.

    Exemple de bidouille :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    type DivByZero = DivByZero
    type BadArgument = BadArgument of string
    
    let foo x y =
        if y = 0 then Choice3_2 DivByZero
        elif x = 0 then Choice3_3 (BadArgument "x")
        else Choice3_1 (x/y)
    
    val foo : int -> int -> Choice<int,DivByZero,BadArgument>
    On peut aussi jouer avec des phantom types, mais ça reste de la bidouille.

    Tu veux faire quoi exactement ? Indiquer à l'utilisateur quelles peuvent se produire ? Dans ce cas, tu devrais le mettre dans la doc. Ou avoir un système d'erreurs propre ? Dans ce cas, il faudrait essayer avec les monades et regarder les solutions utilisées en Haskell.

  3. #3
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro Nicolas Vallée
    Ingénieur d'études
    Inscrit en
    décembre 2005
    Messages
    10 220
    Détails du profil
    Informations personnelles :
    Nom : Homme Nicolas Vallée
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : décembre 2005
    Messages : 10 220
    Points : 17 577
    Points
    17 577

    Par défaut

    Citation Envoyé par LLB Voir le message
    Tu veux faire quoi exactement ? Indiquer à l'utilisateur quelles peuvent se produire ? Dans ce cas, tu devrais le mettre dans la doc. Ou avoir un système d'erreurs propre ? Dans ce cas, il faudrait essayer avec les monades et regarder les solutions utilisées en Haskell.

    en fait je voulais pouvoir indiquer dans les interfaces de mon API qu'elles sont les exceptions éventuelles... sans forcemment inclure cela dans le système de type (je sais qu'il n'y a pas en C# le throws de Java )

    bien sur, la liste des exceptions sera indiquée dans la doc, mais j'aimerais que VS puisse aussi indiquer cela facilement
    j'avais cru lire un exemple d'attributs de classe qui permettait justement de préciser une telle info (sans forcemment être complète elle-aussi, mais à la bonne volonté du codeur )
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  4. #4
    LLB
    LLB est déconnecté
    Membre Expert
    Inscrit en
    mars 2002
    Messages
    962
    Détails du profil
    Informations forums :
    Inscription : mars 2002
    Messages : 962
    Points : 1 263
    Points
    1 263

    Par défaut

    Citation Envoyé par gorgonite Voir le message
    j'avais cru lire un exemple d'attributs de classe qui permettait justement de préciser une telle info (sans forcemment être complète elle-aussi, mais à la bonne volonté du codeur )
    Les attributs fonctionnent de la même façon en F# et en C#. Si tu trouves pour le deuxième, ça marchera aussi pour le premier.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •