Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] External typing
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Remi VANICAT <vanicat@l...>
Subject: Re: [Caml-list] External typing
"Warp" <warplayer@free.fr> writes:

> Hi
> I have something like :
> 
> external f1 : my_very_long_indentifier -> one_other_id -> int = "f1"
> external f2 : my_very_long_indentifier -> one_other_id -> bool = "f2"
> ....
> 
> And I would like to have :
> 
> type 'a conv = my_very_long_indentifier -> one_other_id -> 'a
> 
> external f1 : int conv = "f1"
> external f2 : bool conv = "f2"
> 
> Which is - you'll agree - a lot nicer.
> 
> But the computer yield to me "External identifiers must be
> functions" when I try this. Is that notation really impossible with
> externals or is there some tip ? Does the compiler shouldn't know
> that "int conv" is a functional type ?


>From the ocaml documentation, you can read that 
"The arity (number of arguments) of a primitive is automatically
determined from its Caml type in the external declaration, by counting
the number of function arrows in the type."

So for example if you want a c function taking 1 int and returning a
function from int to int :

type int2int = int -> int

external f2 : int -> int2int = "f2"

so you can't do what you want with ocaml, the only solution is to use
camlp4



-- 
Rémi Vanicat
vanicat@labri.u-bordeaux.fr
http://dept-info.labri.u-bordeaux.fr/~vanicat
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners