2016-08-13 2 views
3

Hat OCaml ein Äquivalent haben (möglicherweise eine camlp4 Richtlinie beteiligt) vonOCaml offen nur bestimmte Werte/Typen von Modul

from module import value1, value2 in Python oder

use Module qw[value1 value2]; in Perl?

Ich mag würde der Lage sein, so etwas wie

open Ctypes (@->), string;; oder open Ctypes ((@->), string);;

statt

let (@->) = Ctypes.(@->);; 
let string = Ctypes.string;; 
+0

vielleicht auschecken [local öffnet] (http://caml.inria.fr/pub/docs/manual-ocaml/extn.html#sec224)? – objmagic

Antwort

3

Der nächste ist:

let value1, value2 = Module.(value1, value2) 

Aus diesem Grund offen Aussagen die meiste Zeit schlecht sind (vor allem auf der obersten Ebene).

1

Ich habe Angst zu schreiben dort Modulöffnung wie eine solche teilweise ist das, was du hast es beschrieben.

  • Wenn Ihre Module haben keinen Namenskonflikt, so einfach ist es genug, nur open Ctypes verwenden

  • Andernfalls können Sie den Modulnamen abkürzen, indem

    module CT = Ctypes 
    
    (* and then just call CT.some_function instead of Ctypes.some_function *) 
    
  • Ihre Lösungen ist eine ziemliche Ordentlich, aber seien Sie vorsichtig, dass der Name string den primitiven Typ string von OCaml überschreiben kann.

    let (@->) = Ctypes.(@->);; 
    let string = Ctypes.string;; (* override the type string *) 
    
Verwandte Themen