Règle MethodCall

20 views
Skip to first unread message

Isabelle Richard

unread,
Jun 1, 2012, 6:37:17 PM6/1/12
to compilation-lic...@googlegroups.com
Rebonsoir,

Ma question concerne la partie "o_r; α = t; ..." da la règle MethodCall.
Ce que je comprends, c'est qu'il faut ajouter dans l'objet "o_r" de nouvelles clés (trouvées dans "α"), associées aux valeurs trouvées dans "t".
J'ai donc essayé d'appliquer la fonction Object.bind_type, mais le "t" me pose problème.
Je dois obtenir un Object.oclass à partir de ce "t" mais je ne m'en sors pas !

Est-ce que ce "t" a bien un rapport avec le "ty_args" de "MethodCall (e, ty_args, args)" ?
Il y a bien les fonctions Predefined.tuple_type et Object.type_alias_binding qui pourraient m'aider à obtenir cet Object.oclass, mais je bloque un peu.

Si je ne suis pas claire du tout, dites-le, j'essayerai de reformuler,
merci !

Jerome Tonnellier

unread,
Jun 1, 2012, 7:11:35 PM6/1/12
to compilation-lic...@googlegroups.com
Re,

ce que je comprends pas dans tout ça, c'est pourquoi t'essayes de binder le(s) type(s) en argument lors de l'appel de fonction ?

Isabelle Richard

unread,
Jun 1, 2012, 7:17:03 PM6/1/12
to compilation-lic...@googlegroups.com
Parce que en bas de la page 2 du sujet, on dit : 
o; α = T_def      pour l'objet o dans lequel le nom α est associé à la définition de classe T_def

Et ça je le comprends comme " il faut ajouter dans l'objet "o" la clé "α" dont la valeur est "T_def" ".
Je me trompe ?

Le 2 juin 2012 01:11, Jerome Tonnellier <jerome.t...@gmail.com> a écrit :
Re,

ce que je comprends pas dans tout ça, c'est pourquoi t'essayes de binder le(s) type(s) en argument lors de l'appel de fonction ?



--
Isabelle

Isabelle Richard

unread,
Jun 1, 2012, 7:19:16 PM6/1/12
to compilation-lic...@googlegroups.com
Ou bien j'ai compris à l'envers ?
Ca veut dire qu'il faut plutôt regarder dans "o" s'il y a une clé "α" qui a pour valeur "T_def" ?
--
Isabelle

Jerome Tonnellier

unread,
Jun 1, 2012, 7:30:04 PM6/1/12
to compilation-lic...@googlegroups.com
ça doit être ça. Mais en quoi ça va t'aider pour traduire l'appel de fonction en un objet final ?

Isabelle Richard

unread,
Jun 1, 2012, 7:51:00 PM6/1/12
to compilation-lic...@googlegroups.com
J'essaye juste de traduire la règle.
Ca va me permettre d'évaluer "e" dans le contexte défini par l'objet "o_r; ........" et d'obtenir l'objet "o'" final.


Le 2 juin 2012 01:30, Jerome Tonnellier <jerome.t...@gmail.com> a écrit :
ça doit être ça. Mais en quoi ça va t'aider pour traduire l'appel de fonction en un objet final ?



--
Isabelle

Christophe L.

unread,
Jun 2, 2012, 4:19:32 AM6/2/12
to compilation-licence-3-2011-2012
En fait il faudrait plutot lire la règle comme:

si o_r; ->α =T= ->t et o_r; ->x =v= ->o alors o_r |- e s'évalue en o'

(Sauf si je me trompe ~)

Jerome Tonnellier

unread,
Jun 2, 2012, 7:48:58 AM6/2/12
to compilation-lic...@googlegroups.com
Bonjour,

je crois que j'ai compris certains trucs...

Au moment de l'appel de fonction t'as une liste d'arguments effectifs  -t->.
Grâce à "Or" tu peux aller chercher tes définitions de templates à partir de ta liste de types ( -t-> ).
Puis une fois que tu les as tous évalués tu les associes (fonction binding truc) avec les types formels de la fonction ( -'a->).
Et voilà, c'est tout pour les types je crois...

Jérôme.

adnan bara

unread,
Jun 2, 2012, 10:13:47 AM6/2/12
to compilation-lic...@googlegroups.com
Bonjour serait il possible d'avoir une explication simple est conscise de cette partie de  la methodcall : "o_r; α = t; ..."

cela signifie  qu'on doit binder les clés dans "Or"  ou plutot voir si elle sont juste déja dedans cela nous aiderai beaucoup

BARA




Jerome Tonnellier

unread,
Jun 2, 2012, 10:37:59 AM6/2/12
to compilation-lic...@googlegroups.com
Bonjour,

Dans "Or" t'as la fonction en question avec les clés alpha, c'est à dire les noms des types formels de la fonction ( et peut-être autre chose avec ).
Je sais pas si c'est la peine de les binder dans "Or" mais je pense que les binder dans o, c'est bien.

Jérôme.

Isabelle Richard

unread,
Jun 2, 2012, 12:23:26 PM6/2/12
to compilation-lic...@googlegroups.com
Je ne m'en sors absolument pas.
"-t->" est-il bien de type actual_type_parameters ?
Je n'arrive pas à obtenir un oclass à partir de ce "-t->", est-ce qu'une des fonctions du module Interpreter pourrait m'aider ?
--
Isabelle

Jerome Tonnellier

unread,
Jun 2, 2012, 3:06:31 PM6/2/12
to compilation-lic...@googlegroups.com
>"-t->" est-il bien de type actual_type_parameters ?

je crois bien.


>est-ce qu'une des fonctions du module Interpreter pourrait m'aider ?

regarde type_alias_binding dans object.mli.

Yann Régis-Gianas

unread,
Jun 2, 2012, 4:21:43 PM6/2/12
to compilation-lic...@googlegroups.com
2012/6/2 Jerome Tonnellier <jerome.t...@gmail.com>:
> regarde type_alias_binding dans object.mli.

Je seconde cet excellent conseil...

fatima louidadi

unread,
Jun 3, 2012, 5:16:09 PM6/3/12
to compilation-licence-3-2011-2012

Bonsoir

j'ai un peu de mal avec la regle MethodCall
Je ne comprends pas ce que représente ['a](x).e, c'est un type meth,
mais a quoi correspond comcretement 'a et x.
Est ce que sa a un rapport avec les deux types de methodes que peut
contenir un objet?

Yann Régis-Gianas

unread,
Jun 4, 2012, 3:40:48 AM6/4/12
to compilation-lic...@googlegroups.com
Bonjour,

2012/6/3 fatima louidadi <fatima....@gmail.com>:
> Je ne comprends pas ce que représente ['a](x).e, c'est un type meth,
> mais a quoi correspond comcretement 'a et x.

Je ne suis pas sûr de bien comprendre à quoi vous faites référence
(code ou spec?) mais à vue de nez, je dirais :

- "['a]" correspond à des paramètres de types
- "x" aux arguments formels
- "e" au corps de la fonction

Par exemple :

object a {
def m [T] (x : predefined.Int, f : Function1[Int, T]) = f (x)
}

- [T] est un paramètre de type.
- x et f sont des arguments formels.
- "f (x)" est le corps de la méthode.

Est-ce que cela vous éclaire?

Loui Fatima

unread,
Jun 4, 2012, 3:54:44 AM6/4/12
to compilation-lic...@googlegroups.com



Est-ce que cela vous éclaire?


Oui merci

Isabelle Richard

unread,
Jun 4, 2012, 5:18:01 AM6/4/12
to compilation-lic...@googlegroups.com
Bonjour,

Dans le cas d'un meth de la forme :
   | InternalCode of (obj list -> obj)

je ne vois pas comment appliquer la règle MethodCall.
Reply all
Reply to author
Forward
0 new messages