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

Langages fonctionnels Discussion :

OCaml vs Anubis


Sujet :

Langages fonctionnels

  1. #21
    alex_pi
    Invité(e)
    Par défaut
    Citation Envoyé par gorgonite Voir le message
    sinon tu peux jouer avec cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # let f1 a lst = [];;
    val f1 : 'a -> 'b -> 'c list = <fun>
    # let app f lst =
          (f 2 lst, f 2.0 lst)
        ;;
    This expression has type float but is here used with type int
    pourtant si je considère app f1 lst, elle est théoriquement correct et renverra ([],[])


    en Haskell

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Prelude> let f1 a lst = []
    Prelude> let f1 a lst = [] in app f1 [1,2,3]
    ([],[])
    Prelude>

    on peut en sortir des tonnes ^^
    Euh... Tu n'a pas dutout appliqué le même cas "pathologique" en Haskell là, si ?

  2. #22
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par alex_pi Voir le message
    Euh... Tu n'a pas dutout appliqué le même cas "pathologique" en Haskell là, si ?
    En fait c'est une confusion des genres, Gorgonite a probablement écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    app f xs = (f 2 xs, f 2.0 xs)
    qui compile effectivement sans problème. Mais le type de app n'est probablement pas celui auxquel il pensait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    app :: (Fractional a) => (a -> b -> c) -> b -> (c, c)
    Haskell ne voit pas le premier 2 comme un entier, mais comme un Fractional, soit un Double soit un Float, puisque f doit aussi être capable de prendre 2.0 comme premier argument.
    En OCaml, 2 est un entier, 2.0 est un double.

    Maintenant, il est effectivement possible de faire ce à quoi pensait Gorgonite en Haskell, avec une annotation explicite de type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    app' :: (forall a. a -> b -> c) -> b -> (c, c)
    app' f x = (f () x, f "hello" x)
    (Et en activant le polymorphisme de rang 2)
    --
    Jedaï

  3. #23
    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
    Citation Envoyé par gorgonite
    ça fait plaisir de voir que la confiance règne ici...
    Bah écoute, tout le monde peut se tromper, la preuve

    Histoire de boucher le trou dans la conversation, une version rang-2 en OCaml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    let app' : <app : 'a. 'a -> 'b -> 'c> -> 'b -> 'c * 'c = fun f x -> (f#app () x, f#app "hello" x)

Discussions similaires

  1. [Débat] Que pensez-vous du langage Anubis ?
    Par MDZ dans le forum Langages fonctionnels
    Réponses: 232
    Dernier message: 19/09/2007, 21h33
  2. [OCaml][Débutant] Graphiques
    Par mavina dans le forum Caml
    Réponses: 1
    Dernier message: 04/11/2005, 20h12
  3. [OCaml] Problème de structure/parser
    Par marv1 dans le forum Caml
    Réponses: 4
    Dernier message: 09/05/2005, 12h16
  4. [OCaml] Parser une ligne de commande
    Par Thanatos dans le forum Caml
    Réponses: 4
    Dernier message: 10/12/2004, 10h11
  5. [OCaml] Toujours "Unbound value..."
    Par robfinck dans le forum Caml
    Réponses: 1
    Dernier message: 16/11/2004, 22h57

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