ocaml-inotifyパッケージを使用しようとしています。この質問に関連する部分は、次のように定義できます。
module Inotify : sig
type wd
val int_of_wd : wd -> int
end = struct
type wd = int
let int_of_wd wd = wd
end
この作業は setuid スクリプトで行われており、inotify の部分を非特権で処理したいので、fork して子の非特権ユーザーに setuid します。ただし、これは、パイプを介して wd エンティティを親に戻す必要があることを意味するため、それらをシリアル化および逆シリアル化する必要があり、int_to_wd
関数が必要です。
次のようにモジュールを拡張しようとしました:
module Rich_Inotify : sig
include module type of Inotify with type wd := int
val wd_of_int : int -> wd
end = struct
include Inotify
let wd_of_int (wd:int) : wd = wd
end
module Inotify = Rich_Inotify
ただし、コンパイラはそれwd
がであり、int
ではないことを訴えwd
ます。これらのタイプが同じであることをどのように説得できますか?