我想提出我的代碼一般在字符串和數組(任何的可索引類型真的)使用以下簽名:如何在數組和字符串上編寫函子?
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)
有什麼辦法解決這個問題嗎?或者也許是一種不同的違法行爲?我知道我可以在最糟糕的情況下使用字符數組,但我寧願將代碼從醜陋的表演中保存下來,這是我之前想到的,所以我想爲此得到明確的答案。
雅這是一個聰明的解決方案,但我走的是仿函數的方法因爲我希望用戶能夠實現他們自己的索引。 – rgrinberg