Я пишу какую-то библиотеку сериализации (для изучения F #). И теперь я застрял с этим:
Предположим, у нас уже есть функции сериализации для некоторых основных типов:
type StoreOps =
static member inline store(x:int) = ...
static member inline store(x:int64) = ...
static member inline store(x:float) = ...
static member inline store(x:float32) = ...
static member inline store(x:bool) = ...
static member inline store(x:string) = ...
....
Теперь я хочу реализовать универсальную функцию для хранения любого массива базовых типов:
let inline store(x:'T[]) =
x |> Array.iter StoreOps.store
, но компилятор не может его скомпилировать (сообщение об ошибке говорит: A unique overload for method 'store' could not be determined based on type information prior to this program point
).
Как правильно реализовать такие функции в F #? Потому что я не хочу копировать и вставлять N одинаковых функций для int[]
, bool[]
, float[]
...