caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] External typing
@ 2002-03-03 18:15 Warp
  2002-03-03 21:14 ` Remi VANICAT
  0 siblings, 1 reply; 2+ messages in thread
From: Warp @ 2002-03-03 18:15 UTC (permalink / raw)
  To: OCaml

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
?

Thanks
Nicolas Cannasse

-------------------
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


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [Caml-list] External typing
  2002-03-03 18:15 [Caml-list] External typing Warp
@ 2002-03-03 21:14 ` Remi VANICAT
  0 siblings, 0 replies; 2+ messages in thread
From: Remi VANICAT @ 2002-03-03 21:14 UTC (permalink / raw)
  To: caml-list

"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


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2002-03-03 21:16 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-03-03 18:15 [Caml-list] External typing Warp
2002-03-03 21:14 ` Remi VANICAT

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).