次のシグネチャを使用して、文字列と配列 (実際にはインデックス可能な型) に対してコードをジェネリックにしたいと思います。
module type Indexable = sig
type 'a t
val get : int -> 'a t -> 'a
end
module MyCode (I : Indexable) = struct ... end
しかしもちろん、次のように署名を文字列に適用することはできません。
module StrMyCode = MyCode(struct
type 'a t = string
let get i a = a.[i]
end)
この問題を解決する方法はありますか? それとも別のアプローチですか?最悪の場合、文字の配列を使用できることはわかっていますが、コードを醜いキャストから救いたいと思っています。