Я не могу найти в интернете, как использовать написанный мной функтор.Я опубликую минимальный код, если вам нужно больше контекстной информации, скажите мне, и я добавлю, но я уверен, что это действительно легко сделать.
Я думаю, я просто не понимаю, что такое функторЯ вижу такие вещи (я буду использовать аналогию с Java, чтобы проиллюстрировать свое понимание, поскольку я новичок в OCaml):
- sig (=) Интерфейс MyInterface
- struct (=) Объект реализует MyInterface
- functor (=) MyInterfaceBis расширяет MyInterface
Следующий пример, который я собираюсь привести, глуп, просто я могу понять концепцию, стоящую за ним:
module type tF = sig
type 'a t
val create : 'a t
end
module F : tF = struct
type 'a t = 'a list
let create = []
end
module type tF2 = functor(F : tF) -> sig
val foo : 'a F.t -> 'a F.t
end
module F2 : tF2 = functor(F : tF) -> struct
let foo f = f
end
Я знаю, что могу сделать, например:
let test = F.create
Но я не знаю, как использовать F2.
Я пробовал это page но он не использует мои записи, и после этого я был более растерян.