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 :

[Ocaml] Vecteurs et traits impératifs des langages fonctionnels


Sujet :

Caml

  1. #1
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut [Ocaml] Vecteurs et traits impératifs des langages fonctionnels
    Bonjour,

    ma question va peut-etre sembler etre ridicule et je m'en excuse si tel est le cas.
    Dans un cours que je suis actuellement sur la programmation fonctionnelle (avec Ocaml comme langage de fond), on a un chapire sur les traits impératifs d'Ocaml visant à montrer qu'il ne s'agit pas d'un langage purement fonctionnel , on parle des tableaux (ou plutot devrais-je dire vecteurs).

    Bien donc on crée les vecteurs et on peut modifier des éléments de ces vecteurs.

    Ma question c'est de savoir ce qui dans les vecteurs fait qu'il s'agit d'un trait imératif et pas d'un trait fonctionnel ?
    Est- ce la notion de tableau en elle même ?
    Est-ce le fait de pouvoir en modifier les éléments ?

    Parceque, en soit, le fait de créé un vecteur renvoit bien une valeur, en quoi n'est-ce pas "fonctionnel" ?


    Du coup j'ai du mal a comprendre la réelle différence entre impératif et fonctionnel et je vois peu l'interet de ce cours si je passe a côté de cette subtilité ...

    MErci donc de m'éclairer
    Chef de Projet SAP. Certifié Prince2 Practitioner
    ---------------------------------------------------
    Anakin Skywalker turned to the Dark Side after his failed attempt to upgrade R/2-D2 to R/3-D2.

  2. #2
    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
    la notion meme de tableau est impérative... tu peux acceder directement à des éléments en écriture, et non par un jeu de valeurs de retour par des fonctions
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  3. #3
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Citation Envoyé par gorgonite
    la notion meme de tableau est impérative... tu peux acceder directement à des éléments en écriture, et non par un jeu de valeurs de retour par des fonctions
    Ben tu dis "tu accèdes directement en écriture " donc on parle bien des modifs mais qu'est-ce qui empeche de penser a un "tableau non modifiable" ?
    Du coup en quoi serait il moin fonctionnel qu'une liste ?
    Chef de Projet SAP. Certifié Prince2 Practitioner
    ---------------------------------------------------
    Anakin Skywalker turned to the Dark Side after his failed attempt to upgrade R/2-D2 to R/3-D2.

  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
    Citation Envoyé par cladsam
    Ben tu dis "tu accèdes directement en écriture " donc on parle bien des modifs mais qu'est-ce qui empeche de penser a un "tableau non modifiable" ?
    Du coup en quoi serait il moin fonctionnel qu'une liste ?

    ben ce n'est plus le tableau tel qu'il est utilisé en Caml...
    si en plus tu ne passes pas par une boucle for pour accéder aux éléments, on retombe sur du fonctionnel
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  5. #5
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Citation Envoyé par gorgonite
    ben ce n'est plus le tableau tel qu'il est utilisé en Caml...
    si en plus tu ne passes pas par une boucle for pour accéder aux éléments, on retombe sur du fonctionnel
    je sais que ce n'est pas le tableau tel qu'il est utilisé en Ocaml mais du coup dans ce cas ce serait bien du fonctionnel donc j'en reviens bien a mon idée de départ : ce qui fait rentrer le tableau dans le fonctionnel, c'est bien le fait de pouvoir modifier les valeurs pas le fait même d'avoir un tableau ?
    Chef de Projet SAP. Certifié Prince2 Practitioner
    ---------------------------------------------------
    Anakin Skywalker turned to the Dark Side after his failed attempt to upgrade R/2-D2 to R/3-D2.

  6. #6
    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
    Citation Envoyé par cladsam
    ce qui fait rentrer le tableau dans le fonctionnel, c'est bien le fait de pouvoir modifier les valeurs pas le fait même d'avoir un tableau ?

    et aussi la méthode classique du parcours par boucle for


    du point de vue fonctionnel un tableau n'est rien de plus qu'un nuplet
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  7. #7
    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
    Le principal point, c'est qu'un tableau est modifiable. Toute donnée modifiable (notamment les références en Caml) est impérative : elle permet de faire des effets de bord (concept typiquement impératif). En programmation fonctionnelle, on ne fait aucune modification, aucun effet de bord.

    Pour le tableau non modifiable, c'est un peu différent. Une liste est définie de manière récursive ; on peut la manipuler naturellement (concaténations, sous-listes...) avec des fonctions récursives.
    Le tableau n'incite pas vraiment le fonctionnel : il est plus logique d'utiliser une boucle pour le parcourir. Un tableau non modifiable n'est donc pas une structure de données agréable à manipuler (la boucle for ne sert à rien si on ne fait pas d'effet de bord).
    Tu peux le considérer comme fonctionnel, à condition que l'interface (les fonctions disponibles) soient faite pour encourager le fonctionnel (head, tail...).

    Si tu veux un autre exemple pour comprendre la différence, compare une table de hachage avec un arbre binaire. Compare les types Hashtbl et Map de Caml : l'un t'incite à faire des effets de bord, l'autre t'encourage à ne pas en faire ; l'un modifie la structure de données lors de l'ajout, l'autre renvoie une nouvelle valeur sans faire d'effet de bord.

  8. #8
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Si tu veux un merveilleux exemple de vecteur fonctionnel, non modifiable, regarde du côté des vecteurs Haskell :

    http://gorgonite.developpez.com/livr...l/?page=arrays

    InHaskellWeTrust now on Haskell's Wiki page !
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

Discussions similaires

  1. [Débat] Langage Fonctionnel vs Langage impératif
    Par millie dans le forum Débats sur le développement - Le Best Of
    Réponses: 152
    Dernier message: 30/08/2010, 10h35
  2. Réponses: 3
    Dernier message: 20/05/2008, 17h59
  3. [Débat] Langage Fonctionnel vs Langage impératif
    Par millie dans le forum Langages fonctionnels
    Réponses: 0
    Dernier message: 07/12/2007, 17h50

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