2016-08-13 9 views
3

から特定の値のみ/タイプを開くのOCamlはOCamlはモジュール

Pythonでfrom module import value1, value2やPerlで

use Module qw[value1 value2];の(おそらくCamlp4のディレクティブを含む)と同等を持っていますか?

私は何のようなそのような部分モジュールの開口部がない怖い

open Ctypes (@->), string;;またはopen Ctypes ((@->), string);;

代わりの

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

チェックアウト[ローカルで開く](http://caml.inria.fr/pub/docs/manual-ocaml/extn.html#sec224)? – objmagic

答えて

3

最も近いです:

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

まさにこの理由のため、オープンステートメントは、(特にトップレベルで)時間悪のほとんどです。

1

ような何かを書くことができるようにしたいのですがあなたは説明しました。

  • あなたのモジュールが何の名前の競合を持っていない場合は、それだけでそれ以外の場合はopen Ctypes

  • を使用するのに十分に簡単です、あなたは

    module CT = Ctypes 
    
    (* and then just call CT.some_function instead of Ctypes.some_function *) 
    
  • あなたのソリューションにより、モジュール名を短縮することができますが、非常aは名前はstringがOCamlのプリミティブタイプstringをオーバーライドする可能性があるので注意してください。

    let (@->) = Ctypes.(@->);; 
    let string = Ctypes.string;; (* override the type string *) 
    
関連する問題