Browse thread
How to define submodules
- Jozef Kosoru
[
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: | 2006-07-21 (11:49) |
From: | Jozef Kosoru <zyzstar@u...> |
Subject: | How to define submodules |
Hello, I'm trying to split my project files into several directories but I can't figure out how to do it right. Let's assume the following directory structure: Kernel/Parser/pdf.ml main.ml and let's define the content of above files as: ~~~ Kernel/Parser/pdf.ml ~~~ let init () = print_string "hello world\n";; ~~~ main.ml ~~~ Kernel.Parser.Pdf.init ();; ~~~ OK, and then I want to compile it (within a root directory): $ ocamlc -c Kernel/Parser/pdf.ml $ ocamlc -I . Kernel/Parser/pdf.cmo main.ml -o app File "main.ml", line 1, characters 0-22: Unbound value Kernel.Parser.Pdf.init Is this supposed to work somehow? I know that most ocaml programs use a bit cumbersome approach and they define long file names to emulate submodules. Eg. Kernel/Parser/kernel_Parser_Pdf.ml main.ml ~~~ main.ml ~~~ Kernel_Parser_Pdf.init ();; ~~~ And then: $ ocamlc -c Kernel/Parser/kernel_Parser_Pdf.ml $ ocamlc -I . -I Kernel/Parser/ \ Kernel/Parser/kernel_Parser_Pdf.cmo \ main.ml -o app but that is rather inelegant. But ANT project [1] uses this nice syntax. For instance, there are files: Engine/Evaluate.ml Main/Main.ml and Main.ml calls: let pages = Engine.Evaluate.evaluate ast ... is it some kind of language extension? I've noticed ANT uses a revised OCaml syntax but there is no such a thing mentioned in its documentation [2]. Thank you for any advice. Regards, Jozef [1] http://ant.berlios.de/ [2] http://caml.inria.fr/pub/docs/manual-camlp4/manual007.html -- jozef kosoru http://zyzstar.kosoru.com