Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
* Some questions about signatures
@ 1999-04-14  7:36 Juan Jose Garcia Ripoll
  1999-04-27 19:47 ` Xavier Leroy
  0 siblings, 1 reply; 2+ messages in thread
From: Juan Jose Garcia Ripoll @ 1999-04-14  7:36 UTC (permalink / raw)
  To: Caml list

Hi,

I must admit that I'm more fluent in SML than in OCaml and that's the reason
for these questions.

1) Are OCaml's signatures opaque? I mean if they do hide the real
implementation of data types and of non-declared values to the public, much
like SML's :>

2) How can I extend a signature with new values and types? I've been using the
'include' directive, but I did not find it in the manual. Is this supposed to
work or is it just a Caml-Light reminiscent.

3) What is the simplest way to build toplevel modules using functors? In SML
everything on every file is bound to the toplevel environment and one can do
just 'structure NewStruct = AFunctor(structure A = AParameter)' to get a brand
new module. But in OCaml toplevel modules are defined in term of two files
(mli/ml) so what are my options if I dont want to add a spurious path name?

Regards
	Juanjo

-- 
Juan Jose Garcia Ripoll		www: http://www.arrakis.es/~worm
Dpto. de Matematicas		job: jjgarcia@ind-cr.uclm.es
E.T.S.I. Industriales		home: worm@arrakis.es
Univ. de Castilla-La Mancha, Ciudad Real E-13071 (Spain)




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

* Re: Some questions about signatures
  1999-04-14  7:36 Some questions about signatures Juan Jose Garcia Ripoll
@ 1999-04-27 19:47 ` Xavier Leroy
  0 siblings, 0 replies; 2+ messages in thread
From: Xavier Leroy @ 1999-04-27 19:47 UTC (permalink / raw)
  To: Juan Jose Garcia Ripoll, Caml list

> 1) Are OCaml's signatures opaque? I mean if they do hide the real
> implementation of data types and of non-declared values to the public, much
> like SML's :>

Yes, they are.  OCaml's ": SIG" construct behaves like ":> SIG" in
SML'97.

> 2) How can I extend a signature with new values and types? I've been
> using the 'include' directive, but I did not find it in the
> manual. Is this supposed to work or is it just a Caml-Light
> reminiscent.

No, it's an oversight in the manual.  "include" in signatures was
originally an experimental feature, but it seems useful enough that it
will stay.  I'll fix the manual.

> 3) What is the simplest way to build toplevel modules using
> functors? In SML everything on every file is bound to the toplevel
> environment and one can do just 'structure NewStruct =
> AFunctor(structure A = AParameter)' to get a brand new module. But
> in OCaml toplevel modules are defined in term of two files (mli/ml)
> so what are my options if I dont want to add a spurious path name?

Currently, you must put your functors inside toplevel structures,
which are then mapped to .ml/.mli files.  So, continuing your example
above, you have to write

        module NewStruct = ModA.Functor(AParameter)

or
        open ModA
        module NewStruct = Functor(AParameter)

One could imagine having compilation units that can be functors by
themselves.  It's mostly a problem of syntax: currently, the contents
of an implementation file (.ml) are systematically taken to be the
inside of a "module X = struct ... end" declaration;  extending this
to functors would require special syntax for the parameters.

Regards,

- Xavier Leroy




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

end of thread, other threads:[~1999-04-29 13:55 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1999-04-14  7:36 Some questions about signatures Juan Jose Garcia Ripoll
1999-04-27 19:47 ` Xavier Leroy

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox