From: Guy Y. <gp...@fr...> - 2010-09-27 18:32:41
|
Bonjour, J'ai écris une fonction s(o):=lambda([m],2*m-o); il s'agit de la symétrie de centre o dans le plan m est une liste de 2 réelsz et o aussi. ça ne fonctionne pas. de manière plus générale comment crée une fonction qui à un élément associe une fonction. (c'est possible en caml). une idée, merci TS |
From: Robert D. <rob...@gm...> - 2010-09-28 02:23:19
|
2010/9/27 Guy Yeterian <gp...@fr...>: > J'ai écris une fonction s(o):=lambda([m],2*m-o); > il s'agit de la symétrie de centre o dans le plan m est une liste de 2 > réelsz et o aussi. ça ne fonctionne pas. > > de manière plus générale comment crée une fonction qui à un élément > associe une fonction. (c'est possible en caml). lambda does not evaluate its arguments. To introduce the value of m into the lambda expression, you must substitute the value into the lambda expression. e.g. here are two ways to solve the problem: s_1 (o) := subst ('o = o, lambda ([m], 2*m - o)); s_2 (o) := buildq ([o], lambda ([m], 2*m - o)); s_1 (17); => lambda([m],2*m-17) s_2 (17); => lambda([m],2*m-17) s_1 (17) (29); => 41 There are still other ways to approach this problem. Hope this helps! Sorry, I can't write in French. Robert Dodier |
From: Guy Y. <gp...@fr...> - 2010-09-28 03:05:46
|
many thanks for your help. Le 28/09/2010 04:23, Robert Dodier a écrit : > 2010/9/27 Guy Yeterian<gp...@fr...>: > >> J'ai écris une fonction s(o):=lambda([m],2*m-o); >> il s'agit de la symétrie de centre o dans le plan m est une liste de 2 >> réelsz et o aussi. ça ne fonctionne pas. >> >> de manière plus générale comment crée une fonction qui à un élément >> associe une fonction. (c'est possible en caml). > lambda does not evaluate its arguments. > To introduce the value of m into the lambda expression, > you must substitute the value into the lambda expression. > > e.g. here are two ways to solve the problem: > > s_1 (o) := subst ('o = o, lambda ([m], 2*m - o)); > > s_2 (o) := buildq ([o], lambda ([m], 2*m - o)); > > s_1 (17); > => lambda([m],2*m-17) > > s_2 (17); > => lambda([m],2*m-17) > > s_1 (17) (29); > => 41 > > There are still other ways to approach this problem. > > Hope this helps! Sorry, I can't write in French. > > Robert Dodier > > |