Я прочитал всю главу о модулях в этой книге , но кое-что я не понял.
Предположим, у меня есть подпись и реализация этой подписи:
module type X = sig
val x : int
val y : int
end
module X1 : X = struct
let x = 5;
let y = 6;
end
Тогда предположим, что у меня есть функтор с такой сигнатурой в качестве paremeter:
module IncX (M: X) = struct
let x = M.x + 1
end
Что если я хочу создать экземпляр IncX
с использованием уже определенного модуля X1
, но переопределить y
функция?
Я хочу сделать что-то вроде этого:
module X1_Specialized : X = struct
//how use x from X1 module here?
let y = 10;
end
Аналогом в OOP языках будет переопределение функции.