2011-12-18 9 views
12

Estoy intentando cargar mis módulos en .cmo en el nivel superior, que había intentado:ocaml módulo de nivel superior de carga

$ ocaml mymodule.cmo 

que tiene el símbolo de nivel superior, pero no podía referirse a MyModule

también probé el

#load "mymodule.cmo" 

no se quejó, pero todavía no puede referirse a MyModule

también probé

#use "mymodule.ml" 

Esto parece funcionar, pero no se carga el código en el espacio de nombres MyModule, que es un problema porque en realidad quiero cargar un par de módulos en el nivel superior, y que se refieren el uno al otro por su espacio de nombres del módulo

+1

Ah, me di cuenta de la causa de mi problema es cmo los archivos están en subdirectorios, - ocaml lib/mymodule.cmo. Tuve que usar - ocaml -I lib mymodule.cmo para poder referirme a él. – romerun

+1

Es genial que las cosas funcionen. Dijiste que cuando '' cargaste '' mymodule.cmo "' no hubo ninguna queja. Pero el toplevel * se quejará si no puede encontrar el módulo que especifique. Tal vez algunas cosas iban mal en diferentes puntos. Saludos, –

Respuesta

15

Después de hacer

#load "mymodule.cmo" 

se puede hacer referencia a su módulo, pero todavía se necesita utilizar el nombre del módulo:

Mymodule.x 

Si desea utilizar un nombre sencillo (x), también es necesario para open el módulo:

open Mymodule 

Este podría ser el vitam e de su problema

Aquí es una sesión que muestra lo que estoy hablando:

$ cat mymodule.ml 
let x = 14 
$ ocaml312 
     Objective Caml version 3.12.0 
# load "mymodule.cmo";; 
# x;; 
Characters 0-1: 
    x 
^
Error: Unbound value x 
# Mymodule.x;; 
- : int = 14 
# open Mymodule;; 
# x;; 
- : int = 14 
# 
Cuestiones relacionadas