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

F# Discussion :

passer en #light ce module


Sujet :

F#

  1. #1
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut passer en #light ce module
    Salut,


    J'essaie en vain de passer ce module en version #light

    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 Environment : 
      sig
        val assign : environment -> string -> valeur -> unit
        val find : environment -> string -> valeur
        val create : int -> environment
        val iter : (string -> valeur -> unit) -> environment -> unit
      end = struct
        //include Hashtbl
        let create i : environment = Hashtbl.create i
        let find env (v : string) : valeur = Hashtbl.find env v
        let iter f (env : environment) = Hashtbl.iter f env 
     
        let assign env (v : string) (val_expr : valeur) =
          try 
            let _ = Hashtbl.find env v
            Hashtbl.replace env v val_expr 
          with Not_found -> 
            Hashtbl.add env v val_expr 
      end
    pour infos, il passe en syntaxe normale

    au passage, le sig ne sert à rien puisque le include n'a pas marché
    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 expérimenté
    Inscrit en
    Mars 2002
    Messages
    967
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 967
    Points : 1 410
    Points
    1 410
    Par défaut
    Si tu veux déclarer un module, fais juste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    module foo =
      let f x = ...
    Le "end" à la fin est optionnel.

    Pour le include, tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    module Environment = Hashtbl
    module Environment =
      // tes fonctions
    Tu peux d'ailleurs ajouter des fonctions à n'importe quel module existant, avec la 2e ligne.

    Pour la signature, elle devrait normalement aller dans un fichier .fsi.

  3. #3
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    ça marche, mais c'est un peu lourd à utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    > module Environment = Hashtbl 
    > module Environment = struct let assign env v expr = Hashtbl.add env v expr end;;
    >  let env : (string,int) Hashtbl.t = Environment.create 10;;

    Citation Envoyé par LLB Voir le message
    Pour la signature, elle devrait normalement aller dans un fichier .fsi.
    ben j'aimerais bien pouvoir tout mettre en le fichier .fs comme en OCaml...
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  4. #4
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    finalement, je passerais pas un fsi plus tard... pour le moment, j'expose tout


    voilà mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    module Environment = Hashtbl
    module Environment =
        let create i : environment = Hashtbl.create i
     
        let assign env (v : string) (val_expr : valeur) =
          try 
            let _ = Hashtbl.find env v
            Hashtbl.replace env v val_expr 
          with Not_found -> 
            Hashtbl.add env v val_expr

    nb : j'ai quand même spécifié create, sinon il fallait que je spécifie systématiquement le type renvoyé par Environment.create (donc Hashtbl.create)
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  5. #5
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Salut,


    ben en fait, ça n'a pas l'air de marcher

    ce code :
    me répond ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    interpret.fs:77:error: FS0039: The value, constructor, namespace or type 'find' is not defined.
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  6. #6
    LLB
    LLB est déconnecté
    Membre expérimenté
    Inscrit en
    Mars 2002
    Messages
    967
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 967
    Points : 1 410
    Points
    1 410
    Par défaut
    J'avais oublié de répondre à ce message. En gros : chez moi, ça marche.

    Le code suivant compile.
    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
    #light
     
    module Environment = Hashtbl
    module Environment =
        let create i = Hashtbl.create i
     
        let assign env (v : string) (val_expr : int) =
          try
            let _ = Hashtbl.find env v
            Hashtbl.replace env v val_expr 
          with Not_found ->
            Hashtbl.add env v val_expr;;
     
    Environment.create |> ignore
    Environment.find |> ignore

  7. #7
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    effectivement, ça marche avec F# 1.4.9.15 sous vista... mais çe ne marchait pas avec F# 1.3.*** sous Mono/Linux
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/01/2015, 18h58
  2. Faut-il passer par la création d'un module ou pas
    Par taka10 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 08/12/2012, 20h19
  3. [1.x] Passer un paramètre module backed
    Par pierreHaut dans le forum Symfony
    Réponses: 4
    Dernier message: 10/02/2011, 15h43
  4. [kernel] Passer un parametre a un module compiler en dur
    Par Ulrar dans le forum Administration système
    Réponses: 3
    Dernier message: 02/06/2009, 09h58
  5. Réponses: 4
    Dernier message: 31/03/2006, 15h16

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