Browse thread
Including code from a .cm[ox] into another .cm[ox]
-
Guillaume Yziquel
- Philippe Veber
-
Philippe Veber
- Guillaume Yziquel
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 2009-11-12 (14:16) |
From: | Guillaume Yziquel <guillaume.yziquel@c...> |
Subject: | Re: [Caml-list] Including code from a .cm[ox] into another .cm[ox] |
Philippe Veber a écrit : > You're right this is a linking issue and now the question is at which level > you want to "link" your code. I do not see the point of including a cmo in > another like you describe : i believe there are simpler and mainstream > options. Maybe I miss some details about your problem ? Using findlib to > help the linker is one way to do it, but if you insist on loading a single > module then you have two other options : > - code inclusion -> m4, camlmix, camlp4 or any preprocessor (not that ugly, > but still) > - the -pack option for combining several cmo in a single one (but then all > your modules are included in a "toplevel" module) > sorry if i still didn't get your problem ;o). > ph. You're getting my problem right. I'm working on the OCaml-R binding of Maxence Guesdon. The thing is, I have a r.ml file, where all the binding work is done. However, in order to launch the shared library containing the code of the R interpreter, some environment variables must be set up first. Therefore I have a small R script, based on Dirk Eddelbuettel's littler software, that generates an .ml file, rstdenv.ml, containing the environment variables that need to be set up correctly. Maybe it's trying to be a bit too pretty, but I do not like the name Rstdenv for a module. I'd rather have R.Standard.env... So I'm looking for a way to include a module as a submodule, without having to link it to rstdenv.cmo, which I really do not want to be available from the r.cma archive. That's why I was wondering if there is a clean, camlish way, to link-substitute code from one .cmo into another .cmo... The -pack option is clearly overkill, camlp4 seems overkill too, m4 is ugly, do not know camlmix. There's also a package from Gerd Stolpmann, xstrp4 or something like that which could be useful. But as I want to minimise dependencies on extra stuff, I was wondering if there was an out-of-box obscure compiling option to do so. All the best, Guillaume Yziquel. > 2009/11/12 Guillaume Yziquel <guillaume.yziquel@citycable.ch> > >> Philippe Veber a écrit : >> >> Hi >>> maybe you can have a look at findlib and its #require statement. For >>> instance, pxp (xml related library) depends on many cma, but everything >>> loads automagically when invoking #require : >>> >> No, no, no... this is not the issue at all. My issue is not about loading >> stuff with findlib, it's about including a .cmo into another .cmo. I'd like >> to create a .cma with only a.ml, and not containing b.ml. >> >> It's not a toplevel issue, but a 'linking' issue. >> >> Thanks anyway. >> >> Guillaume. >> >> >> >> >> 2009/11/12 Guillaume Yziquel <guillaume.yziquel@citycable.ch> >>> Hello. >>>> Imagine I have a file named a.ml containing >>>> >>>> module C = struct >>>> >>>>> include B >>>>> end >>>>> >>>>> and a file named b.ml containing the code >>>> let f x = x + 1 >>>> When I compile everything to .cmo files, I cannot load a.cmo from the >>>> toplevel without loading b.cmo beforehand. >>>> >>>> Is there a way to make the 'include B' statement to include the code of >>>> the >>>> B module in the C submodule directly so that it is not required to load >>>> the >>>> b.cmo file before loading the a.cmo file? >>>> >>>> That would be extremely useful to me... >>>> >>>> All the best, >>>> >>>> -- >>>> Guillaume Yziquel >>>> http://yziquel.homelinux.org/