Précédent   Forum du club des développeurs et IT Pro > Autres langages > Langages fonctionnels > F#
F# Forum d'entraide sur la programmation en langage fonctionnel F#
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 05/12/2008, 11h55   #1
gorgonite
Rédacteur/Modérateur

 
Avatar de gorgonite
 
Homme Nicolas Vallée
Ingénieur d'études
Inscription : décembre 2005
Messages : 9 978
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vallée
Âge : 28
Localisation : France

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

Informations forums :
Inscription : décembre 2005
Messages : 9 978
Points : 18 206
Points : 18 206
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
gorgonite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2008, 13h27   #2
LLB
Membre Expert
 
Inscription : mars 2002
Messages : 962
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 962
Points : 1 149
Points : 1 149
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.
LLB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2008, 14h03   #3
gorgonite
Rédacteur/Modérateur

 
Avatar de gorgonite
 
Homme Nicolas Vallée
Ingénieur d'études
Inscription : décembre 2005
Messages : 9 978
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vallée
Âge : 28
Localisation : France

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

Informations forums :
Inscription : décembre 2005
Messages : 9 978
Points : 18 206
Points : 18 206
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
gorgonite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2008, 14h22   #4
LLB
Membre Expert
 
Inscription : mars 2002
Messages : 962
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 962
Points : 1 149
Points : 1 149
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.
LLB est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h06.


 
 
 
 
Partenaires

Hébergement Web