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 217
    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 217
    Points : 17 566
    Points
    17 566

    Par défaut probleme avec Set.Make

    Bonjour,


    J'ai un peu de mal à comprendre comment on peut se servir de Set.Make en F#


    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    module MonModule =
       type t = ...
       let create () : t = ...
       let compare (x:t) (y:t) : int = compare x y
    
    let MonModuleSetProvider = Set.Make MonModule.compare
    
    MonModuleSetProvider.add (MonModule.create ()) Set.empty

    et je me fais déjà insulter à cause de l'incompatiblité Tagged.Set<MonModule.t,System.Collections.Generic.IComparer<MonModule.t>> et MonModule.t
    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

    J'avais écris cet exemple minimaliste il y a quelque temps :

    Code :
    1
    2
    3
    4
    5
    // Set.Make returns a set of functions
    let AbsSet = Set.Make(fun x y -> compare (abs x) (abs y))
    let set_of_list l =
        List.fold_left (fun s e -> AbsSet.add e s) AbsSet.empty l
    set_of_list [-2; 5; 2; 4]
    Dans ton code, remplace "Set.empty" par "MonModuleSetProvider.empty". Le reste me semble correct.

  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 217
    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 217
    Points : 17 566
    Points
    17 566

    Par défaut

    Citation Envoyé par LLB Voir le message
    Dans ton code, remplace "Set.empty" par "MonModuleSetProvider.empty". Le reste me semble correct.

    effectivement, ça marche... si simple, et pourtant je sèche depuis une heure dessus
    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

    Ce qui m'a étonné, c'est le message d'erreur que tu indiques.
    Quand j'ai testé (avec des int, au lieu de t), il m'a dit

    Code :
    1
    2
    3
    4
    stdin(16,38): error FS0001: This expression has type
    	Set<'a>
    but is here used with type
    	Tagged.Set<int,System.Collections.Generic.IComparer<int>>.
    Pour avoir un Tagged.Set, il faut passer par le provider.

+ Répondre à la discussion
Cette discussion est résolue.

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
  •