C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

définition de fonction

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Bernard Bergeron
Guest





PostPosted: Fri Jun 18, 2004 1:04 am    Post subject: définition de fonction Reply with quote



comment définir f qui à un élément de type t1 associe une fonction qui à
- une fonction qui associe à t2 -> t3

associe

- une contion qui a t4 associe t5


.... histoire que je comprenne la logique...

merci!

en gros :
f t1 -> ((t2->t3)->(t4->t5))


Back to top
Fabien LE LEZ
Guest





PostPosted: Fri Jun 18, 2004 2:54 am    Post subject: Re: définition de fonction Reply with quote



On Fri, 18 Jun 2004 03:04:09 +0200, "Bernard Bergeron"
<bergeron.trash (AT) free (DOT) fr>:

Quote:
comment définir f qui à un élément de type t1 associe une fonction qui à
- une fonction qui associe à t2 -> t3

Je suppose que tu parles d'une fonction qui a un seul argument, de
type t2, et qui renvoie un t3 ?

Quote:
associe

- une contion qui a t4 associe t5

A priori, ça doit donner un truc comme ça :

typedef t3 (*fct_t2_t3) (t2);
typedef t5 (*fct_t4_t5) (t4);

fct_t4_t5 f (fct_t2_t3)
{
}

Note : il est possible de faire ça sans typedef, mais c'est vite
illisible.

Note bis : il est assez peu courant en C++ d'utiliser les pointeurs de
fonctions ; on préférera les foncteurs.


--
schtroumpf schtroumpf

Back to top
Fabien LE LEZ
Guest





PostPosted: Fri Jun 18, 2004 2:56 am    Post subject: Re: définition de fonction Reply with quote



[Note : message précédent annulé car je ne sais pas faire un
Supersedes]

On Fri, 18 Jun 2004 03:04:09 +0200, "Bernard Bergeron"
<bergeron.trash (AT) free (DOT) fr>:

Quote:
comment définir f qui à un élément de type t1 associe une fonction qui à
- une fonction qui associe à t2 -> t3

Je suppose que tu parles d'une fonction qui a un seul argument, de
type t2, et qui renvoie un t3 ?

Quote:
associe

- une contion qui a t4 associe t5

A priori, ça doit donner un truc comme ça :

typedef t3 (*fct_t2_t3) (t2);
typedef t5 (*fct_t4_t5) (t4);
typedef fct_t4_t5 (*fct_t) (fct_t2_t3);

fct_t f (t1)
{
}

Note : il est possible de faire ça sans typedef, mais c'est vite
illisible.

Note bis : il est assez peu courant en C++ d'utiliser les pointeurs de
fonctions ; on préférera les foncteurs.


--
schtroumpf schtroumpf

Back to top
Bernard Bergeron
Guest





PostPosted: Fri Jun 18, 2004 3:30 am    Post subject: Re: définition de fonction Reply with quote

merci, mais tu pourrais me la refaire en une seule fois?
... aucune utilité bien sûr sinon de comprendre l'ordre d'écriture...


"Fabien LE LEZ" <gramster (AT) gramster (DOT) com> a écrit dans le message de
news:8cm4d0t34voo4ifp7u1g90d08ijk0quj4p (AT) 4ax (DOT) com...
Quote:
[Note : message précédent annulé car je ne sais pas faire un
Supersedes]

On Fri, 18 Jun 2004 03:04:09 +0200, "Bernard Bergeron"
[email]bergeron.trash (AT) free (DOT) fr[/email]>:

comment définir f qui à un élément de type t1 associe une fonction qui à
- une fonction qui associe à t2 -> t3

Je suppose que tu parles d'une fonction qui a un seul argument, de
type t2, et qui renvoie un t3 ?

associe

- une contion qui a t4 associe t5

A priori, ça doit donner un truc comme ça :

typedef t3 (*fct_t2_t3) (t2);
typedef t5 (*fct_t4_t5) (t4);
typedef fct_t4_t5 (*fct_t) (fct_t2_t3);

fct_t f (t1)
{
}

Note : il est possible de faire ça sans typedef, mais c'est vite
illisible.

Note bis : il est assez peu courant en C++ d'utiliser les pointeurs de
fonctions ; on préférera les foncteurs.


--
schtroumpf schtroumpf



Back to top
Fabien LE LEZ
Guest





PostPosted: Fri Jun 18, 2004 4:17 am    Post subject: Re: définition de fonction Reply with quote

On Fri, 18 Jun 2004 05:30:07 +0200, "Bernard Bergeron"
<bergeron.trash (AT) free (DOT) fr>:

Quote:
merci, mais tu pourrais me la refaire en une seule fois?

Non, je ne me hasarderais pas à ce genre d'obfuscation.
En passant, merci d'apprendre à poster sur Usenet -- cf
<http://www.giromini.org/usenet-fr/repondre.html>.


--
schtroumpf schtroumpf

Back to top
Michel Michaud
Guest





PostPosted: Fri Jun 18, 2004 4:23 am    Post subject: Re: définition de fonction Reply with quote

Dans news:40d260ad$0$287$626a14ce (AT) news (DOT) free.fr, Bernard
Bergeron <bergeron.trash (AT) free (DOT) fr> a écrit :
Quote:
merci, mais tu pourrais me la refaire en une seule fois?
.. aucune utilité bien sûr sinon de comprendre l'ordre
d'écriture...

Tu en demandes beaucoup et tu ne fais pas beaucoup d'effort,
moi en tout cas, je n'avais rien compris de ta question...
Il faudrait que tu apprennnes aussi à répondre à la bonne
place, c'est bien plus simple que les déclarations C...

Quote:
"Fabien LE LEZ" <gramster (AT) gramster (DOT) com> a écrit dans le message
de news:8cm4d0t34voo4ifp7u1g90d08ijk0quj4p (AT) 4ax (DOT) com...
On Fri, 18 Jun 2004 03:04:09 +0200, "Bernard Bergeron"
[email]bergeron.trash (AT) free (DOT) fr[/email]>:

comment définir f qui à un élément de type t1 associe une
fonction qui à - une fonction qui associe à t2 -> t3

Je suppose que tu parles d'une fonction qui a un seul
argument, de
type t2, et qui renvoie un t3 ?

associe

- une contion qui a t4 associe t5

A priori, ça doit donner un truc comme ça :

typedef t3 (*fct_t2_t3) (t2);
typedef t5 (*fct_t4_t5) (t4);
typedef fct_t4_t5 (*fct_t) (fct_t2_t3);

fct_t f (t1)
{
}

Note : il est possible de faire ça sans typedef, mais c'est
vite illisible.

Je ne trouve pas que c'est lisible avec les typedef non plus :-)

Ceci dit, pour faire plaisir à Bernard, si ta réponse est
correcte, on peut aussi écrire :

t5 (*(*f(t1))(t3 (*)(t2)))(t4)
{}

Qu'on peut lire :

- f prend un paramètre de type t1
f(t1)
- elle renvoie quelque chose qu'on peut déréférencer
et alors on a une fonction à laquelle on peut passer un
paramètre
(*f(t1))(?)
- ce paramètre est un pointeur sur une fonction acceptant
un t2 et renvoyant un t3 i.e. t3 (*)(t2) donc
(*f(t1))(t3 (*)(t2))
- cet appel de fonction renvoie quelque chose qu'on peut
déréférencer et alors on a une fonction à laquelle on peut
passer un paramètre
(*(*f(t1))(t3 (*)(t2)))(?)
- ce paramètre est un t4 et la fonction renvoie un t5 donc
t5 (*(*f(t1))(t3 (*)(t2)))(t4)

--
Michel Michaud [email]mm (AT) gdzid (DOT) com[/email]
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/


Back to top
Jean-Noël Mégoz
Guest





PostPosted: Fri Jun 18, 2004 8:32 am    Post subject: Re: définition de fonction Reply with quote


"Michel Michaud" <mm (AT) gdzid (DOT) com> a écrit dans le message de
news:T6uAc.50598$7H1.1708439 (AT) news20 (DOT) bellglobal.com...
Quote:

Je ne trouve pas que c'est lisible avec les typedef non plus :-)

Ceci dit, pour faire plaisir à Bernard, si ta réponse est
correcte, on peut aussi écrire :

t5 (*(*f(t1))(t3 (*)(t2)))(t4)
{}


C'est vrai que comme ça, c'est limpide !
Y'en a pas un qui parlait de supprimer le parenthèsage, dans une autre
conversation, déjà ? Wink))



Back to top
Bernard Bergeron
Guest





PostPosted: Fri Jun 18, 2004 12:40 pm    Post subject: Re: définition de fonction Reply with quote

Quote:
Je ne trouve pas que c'est lisible avec les typedef non plus :-)

Ceci dit, pour faire plaisir à Bernard, si ta réponse est
correcte, on peut aussi écrire :

t5 (*(*f(t1))(t3 (*)(t2)))(t4)
{}


C'est vrai que comme ça, c'est limpide !
Y'en a pas un qui parlait de supprimer le parenthèsage, dans une autre
conversation, déjà ? Wink))

merci,
on est obligé de passer une fonction par un pointeur?



Back to top
Michel Michaud
Guest





PostPosted: Fri Jun 18, 2004 2:35 pm    Post subject: Re: définition de fonction Reply with quote

Dans news:40d2e161$0$286$626a14ce (AT) news (DOT) free.fr, Bernard
Bergeron <bergeron.trash (AT) free (DOT) fr> a écrit :
Quote:
t5 (*(*f(t1))(t3 (*)(t2)))(t4)
{}
merci,
on est obligé de passer une fonction par un pointeur?

Oui, mais on n'est pas obligé de l'écrire explicitement. Par
exemple (j'ai mis des noms aux paramètres) :

t5 (*(*f(t1 prm1))(t3 prmFctPrenantT2DonnantT3(t2 prm2)))(t4 prm4)

Ça n'ajoute pas grand chose...

--
Michel Michaud [email]mm (AT) gdzid (DOT) com[/email]
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/




Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.