IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Caml Discussion :

Egalité de types et foncteurs


Sujet :

Caml

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut Egalité de types et foncteurs
    Bonjour,

    Je suis très ennuyé car le compilateur ocaml me renvoie une erreur de type qui sont pour moi trivialement égaux. Ce n'est pas tellement ça qui est ennuyeux, mais le fait que dès que j'essaie d'en extraire un exemple suffisement petit, le compilateur ne bronche plus.

    A la base, le problème n'est pas plus compliqué que celui-là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    module type S =
    sig
      type t
    end
     
    module type T =
    sig
    end
     
    module A (M : T) =
    struct
      type t
    end
     
    module X (M : T) : S with type t =  A (M).t =
    struct
      module B = A (M)
      type t = B.t
    end
    Ici, le compilateur parvient à vérifier que le module X correspond bien à la signature donnée. Dans l'exemple initial, t est bien plus compliqué et dépend d'instanciations de foncteur dépendant de M. Et dans l'exemple initial, j'obtient l'erreur semblable à ça pour la vérification de la signature de X :

    Type declarations do not match:
    type t = B.t
    is not included in
    type t = A(M).t
    Ca m'empêche dans X d'utiliser les fonctions de A(M) avec le type t. Mon problème donc, c'est que je n'ai absolument aucune piste pour comprendre le problème, avoir la moindre idée d'où chercher une erreur de ma part. Le code divisé en une trentaine de fichier approche les 10 000 lignes, et il y a des foncteurs dans tous les sens. Quelle approche utiliser pour tenter de comprendre ce qui ne plaît pas au compilateur ?

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    En fait, le problème est connu et est une limitation du système de typage des modules marqué "won't fix" :

    http://caml.inria.fr/mantis/view.php?id=3476

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

Discussions similaires

  1. Egalité de types et foncteurs
    Par Blustuff dans le forum Caml
    Réponses: 0
    Dernier message: 21/08/2010, 22h24
  2. foncteur, type fonction, composition
    Par CedricMocquillon dans le forum C++
    Réponses: 8
    Dernier message: 07/05/2009, 19h28
  3. Réponses: 2
    Dernier message: 05/06/2002, 12h29
  4. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo