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