csl-> pb avec les fonctions dans le module

Bouzid Djamila (Bouzid.Djamila@loria.fr)
Fri, 24 May 1996 16:04:18 +0200 (MET DST)

From: Bouzid Djamila <Bouzid.Djamila@loria.fr>
Message-Id: <199605241404.QAA04595@delsarte.loria.fr>
Subject: csl-> pb avec les fonctions dans le module
To: caml-list@pauillac.inria.fr
Date: Fri, 24 May 1996 16:04:18 +0200 (MET DST)

Bonjour,

Voila mon probleme :

quand je rentre dans l'interpreteur Caml Special Light la fonction

let do_if_debug x = if x then (function (f, a) -> (f a))
else (function (f,a)-> ());;

la reponse est
val do_if_debug : bool -> ('a -> unit) * 'a -> unit = <fun>

mais si j'introduis la meme fonction dans un functor c-a-d
si je rentre par exemple

module type S1 = sig val x : bool end
module F (X: S1) =
struct
let do_if_debug = if X.x then (function (f, a) -> (f a))
else (function (f,a)-> ())
end;;

il m'affiche le message d'erreur suivant

The type of this expression, ('_a -> unit) * '_a -> unit,
contains type variables that cannot be generalized

A quoi cela est du ??

Merci pour la reponse.

--------------------------------------------------------------------

Hi!

My problem is :

if I write in Caml Special Light interpreter this function

let do_if_debug x = if x then (function (f, a) -> (f a))
else (function (f,a)-> ());;

the response of the interpreter is
val do_if_debug : bool -> ('a -> unit) * 'a -> unit = <fun>

but if I introduce the same function in functor i.e
if I write for example

module type S1 = sig val x : bool end
module F (X: S1) =
struct
let do_if_debug = if X.x then (function (f, a) -> (f a))
else (function (f,a)-> ())
end;;

then the response is

The type of this expression, ('_a -> unit) * '_a -> unit,
contains type variables that cannot be generalized

what is the problem ??

Thanks for the response.

D. Bouzid