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 :

Interpretation d'une expression


Sujet :

Caml

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Etudiant en mathématique
    Inscrit en
    Octobre 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Etudiant en mathématique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Interpretation d'une expression
    Bonjour, je suis un étudiant en licence de math/info et je viens de commencer l'apprentissage du langage Caml.
    Cependant l'exercice suivant me pose certaines difficultés :
    Indiquez l'interprétation de l'expression suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #let fc a b c d = a b c + if d=(0,0) then b c else c ;;
    je sais que la réponse est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((int -> int) -> int -> int) -> (int -> int) -> int -> int * int -> int = <fun>
    seulement je n'ai aucune idée de pourquoi on y trouve des parenthèse..

    Si quelqu'un pouvait m'accorder un peut de temps pour m'expliquer l'objectifs de ces parenthèse, et la manières de les voir, j'en serai vraiment reconnaissant!

    En vous remerciant d'avance

  2. #2
    Membre du Club
    Homme Profil pro
    Chercheur en maths appli
    Inscrit en
    Novembre 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Chercheur en maths appli
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2013
    Messages : 29
    Points : 46
    Points
    46
    Par défaut
    Hello,
    On va y aller pas à pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    let fc a b c d = a b c + if d=(0,0) then b c else c ;;
    On identifie fc comme une fonction puisqu'elle prend 4 paramètres. On aura un type du genre : t1 -> t2 -> t3 -> t4 -> r
    où t1, t2, t3, t4 sont les types des paramètres et r le type de retour.

    Ensuite on pose des contraintes sur ces types en lisant le code :

    est un appel de fonction. Donc a est une fonction et b et c ses arguments. Le type t1 de a peut donc être mis à jour en : t5 -> t6 -> t7
    avec t5 et t6 les types de ses paramètres et t7 son type de retour.
    Or a est appelée sur b et c, donc t5 = t2 et t6 = t3.

    On a :

    donc t7 est int (+ est l'addition entière). Donc a est de type t2 -> t3 -> int

    Pour le moment, le type de notre fonction fc est : (t2 -> t3 -> int) -> t2 -> t3 -> t4 -> r

    Est-ce que tu peux terminer l'analyse par toi-même ?

Discussions similaires

  1. Interpreter et calculer une expression
    Par kodo dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 25/03/2014, 10h39
  2. [Regex] Vérifier qu'une chaîne respecte une expression régulière
    Par PeteMitchell dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 13/05/2004, 14h22
  3. [String] rendre une expression reguliere insensible à la case
    Par chimical dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 07/05/2004, 11h38
  4. "Différence de type dans une expression" Tquery
    Par Hakim dans le forum Bases de données
    Réponses: 3
    Dernier message: 20/04/2004, 00h22
  5. [langage] surement une expression régulière...
    Par armada dans le forum Langage
    Réponses: 5
    Dernier message: 30/05/2003, 17h06

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