Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 12 sur 12
  1. #1
    Invité de passage
    Inscrit en
    septembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : septembre 2009
    Messages : 11
    Points : 0
    Points
    0

    Par défaut programmation fonctionnelle avec f#

    Je travail sur un projet avec f# (programmation fonctionnelle) pour qui consiste à développer une approche algébrique appelée PBA*.
    Voici ci-dessous son syntaxe et sa sémantique:
    syntaxe de PBA: x, y ::= 0 | 1 | a | x + y | x.y | x*.y
    sémantique de PBA:

    •0 c'est à dire que le processus est dans l'état mort.
    • 1 c'est à dire que le processus a fini normalement son exécution
    • x + y c'est le choix entre x et y.
    • x.y c'est x puis y.
    • x*y est équivalent à x.(x*.y) + y.

    j'ai essayé d'utiliser Fslex et Fsyacc pour l'analyse syntaxique et sémantique de PBA* mais j'ai pas réussir à le faire
    Je veux savoir comment je procède pour faire ce travail
    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro Nicolas Vallée
    Ingénieur d'études
    Inscrit en
    décembre 2005
    Messages
    10 215
    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 215
    Points : 17 532
    Points
    17 532

    Par défaut

    montres nous tes essais, on t'aidera à corriger
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  3. #3
    Invité de passage
    Inscrit en
    septembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : septembre 2009
    Messages : 11
    Points : 0
    Points
    0

    Par défaut

    Je suis débutant avec la programmation fonctionnelle du coup j'ai pas fait une grande chose.
    J'ai pas compris comment je procède

  4. #4
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro Nicolas Vallée
    Ingénieur d'études
    Inscrit en
    décembre 2005
    Messages
    10 215
    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 215
    Points : 17 532
    Points
    17 532
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  5. #5
    Invité de passage
    Inscrit en
    septembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : septembre 2009
    Messages : 11
    Points : 0
    Points
    0

    Par défaut

    Merci je vais essayer cet exemple

  6. #6
    Invité de passage
    Inscrit en
    septembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : septembre 2009
    Messages : 11
    Points : 0
    Points
    0

    Par défaut

    avez vous un tuto pour m'explique comment je peux exécuter les fichiers lexer.fsl parser.fsy et eval.fs sur Microsoft visual studio
    Merci

  7. #7
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro Nicolas Vallée
    Ingénieur d'études
    Inscrit en
    décembre 2005
    Messages
    10 215
    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 215
    Points : 17 532
    Points
    17 532

    Par défaut

    avec visual studio impossible, il faut générer des fichiers fs avec le fsy puis le fsl, et ensuite compiler via fsc
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  8. #8
    Invité de passage
    Inscrit en
    septembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : septembre 2009
    Messages : 11
    Points : 0
    Points
    0

    Par défaut

    J'ai réussi à faire un analyseur syntaxique et sémantique en utilisant les outils fsyacc et fslex mais ce n'est pas ça mon problème.
    il faut implémenter les fonctions suivantes:
    @a(0) = 0
    @a(1) = 0
    @a(a) = 1
    @a(b) = 0
    @a(x*y) = @a(x).x*y + @a(y)
    @a(x + y) = @a(x) + @a(y)
    @a(x.y) = @a(x).y + o(x)@a(y)
    avec @a(x) = {x' | x -> x' en exécutant l'action a}.

    Propriété de BPA*:

    x + (y + z) ~ (x + y) + z
    x + x ~ x
    x.(y.z) ~ (x.y).z (B7)
    x.1 ~ x ~ 1.x
    x + y ~ y + x
    x.0 ~ x
    (x + y).z ~ x.z + y.z
    x + 0 = x
    x.(y + z) ~ x.y + x.z
    x*y ~ y + x.x*.y

    Merci

  9. #9
    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

    Qu'est-ce qui te pose problème exactement ?
    As-tu déjà réussi à créer le type représentant tes données ?

  10. #10
    Invité de passage
    Inscrit en
    septembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : septembre 2009
    Messages : 11
    Points : 0
    Points
    0

    Par défaut

    non j'ai pas réussir à le faire

  11. #11
    Membre Expert
    Inscrit en
    avril 2007
    Messages
    831
    Détails du profil
    Informations forums :
    Inscription : avril 2007
    Messages : 831
    Points : 1 130
    Points
    1 130

    Par défaut

    On est là pour t'aider, pas pour faire le travail à ta place. Nous donner l'énoncé de ton devoir c'est bien, mais si tu ne montres pas que tu as un poil travaillé, on ne va pas tout faire pour toi.

    C'est le sens des questions de gorgonite ("montre nous tes essais") et LLB ("qu'est-ce qui te pose problème"). Montre nous que tu as vraiment travaillé, ce que tu as essayé de faire, pourquoi ça n'a pas marché, et ils feront des efforts pour te permettre de terminer.

  12. #12
    Invité de passage
    Inscrit en
    septembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : septembre 2009
    Messages : 11
    Points : 0
    Points
    0

    Par défaut

    J'ai utilisé pattern matching de f# comme suit

    let (+?) x y= x * y

    type Expr =
    | Num of int
    | Add of Expr * Expr
    | Mul of Expr * Expr
    | Var of string
    | Var1 of string

    let rec deriv a exp=
    match exp with
    | Num n -> 0
    | Add (x,y) -> deriv a x + deriv a y
    | Mul (x,y) -> y +? deriv a x + x +? deriv a y
    | Var a -> 1
    | Var1 b -> 0
    let expT1 = Add(Var "a", Mul (Var "a",Var "b"))
    let a = "a"

    a l'execution
    > deriv a exprT1 ;;

    Program.fs(21,20): error FS0001: This expression has type
    Expr
    but is here used with type
    int
    Je sais pas comment corriger cette erreur

    Merci

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
  •