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 :

[Débutante] problème de définition de type


Sujet :

Caml

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 10
    Points : 8
    Points
    8
    Par défaut [Débutante] problème de définition de type
    Bonjours à tous,

    Au fait j'essaye de définir un type minuscule qui est donc composé que de char minuscules,
    j'ai essayé avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    type minuscule = 'a' | 'b' | 'c' | ... | 'z'
    mais cela ne marche pas, s'il vous plait aidez moi, je bloque dessus et j'arrive pas à trouver de solution.
    Merci à l'avance!

  2. #2
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Bonjour.

    Concernant ton problème, Caml ne peut pas, à ma connaissance, restreindre un type en un sous type suivant des valeurs autorisées, et d'autres pas. La solution que je préconiserais serait, si tu as vraiment besoin d'un tel type, de faire cela en deux couches.
    D'une part un type lettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    type lettre = A | B | ... | Z
    et d'autre part une fonction qui à une de ces lettre associe un caractère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function A -> 'a' | ... | Z -> 'z'
    Mais suivant le problème que tu cherches à résoudre, tu devrais pouvoir faire plus simple
    -- Yankel Scialom

  3. #3
    Membre éprouvé
    Avatar de Cacophrene
    Homme Profil pro
    Biologiste
    Inscrit en
    Janvier 2009
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Janvier 2009
    Messages : 535
    Points : 1 125
    Points
    1 125
    Par défaut
    Bonsoir,

    Tu peux aussi utiliser des types fantômes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    type 'a chr = char
    type lcase
    
    let validate (chr : 'a chr) =
      if Char.lowercase chr = chr then (chr : lcase chr) 
      else invalid_arg "validate"
    Le type 'a chr n'est autre qu'un caractère simple (type char), mais il reçoit un paramètre qui indique s'il s'agit d'une lettre minuscule.

    Cordialement,
    Cacophrène

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    832
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 832
    Points : 1 104
    Points
    1 104
    Par défaut
    Cacophrène : ton code n'est pas bon, il faut une signature de module pour que le type ('a chr) soit abstrait, sans quoi le type fantôme ne sert à rien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # type 'a chr = char;;
    # type lcase;;
    # ('A' : lcase chr);;
    - : lcase chr = 'A'

  5. #5
    Membre éprouvé
    Avatar de Cacophrene
    Homme Profil pro
    Biologiste
    Inscrit en
    Janvier 2009
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Janvier 2009
    Messages : 535
    Points : 1 125
    Points
    1 125
    Par défaut
    Bonsoir,

    Cacophrène : ton code n'est pas bon, il faut une signature de module pour que le type ('a chr) soit abstrait, sans quoi le type fantôme ne sert à rien
    Tu as raison de le préciser, bluestorm. C'était un peu implicite pour moi, mais vu qu'on s'adresse à un débutant, autant tout détailler jusqu'au bout. Merci d'y avoir contribué.

    Cordialement,
    Cacophrène

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    je vous remercie pour votre aide, j'ai du faire un mix, et puis ca marche bien
    *encore merci

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

Discussions similaires

  1. [Débutant] Problème de type (et de notation)
    Par bumbolol dans le forum Caml
    Réponses: 4
    Dernier message: 14/02/2011, 11h16
  2. [Débutant] problème avec les types de variables
    Par mitmit dans le forum Débuter
    Réponses: 10
    Dernier message: 14/02/2008, 11h40
  3. Problème pour une définition de type
    Par Kleer dans le forum Ada
    Réponses: 4
    Dernier message: 05/03/2007, 12h34
  4. Réponses: 5
    Dernier message: 11/07/2006, 18h01
  5. Réponses: 1
    Dernier message: 21/12/2005, 19h08

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