Tente entender melhor a interface / módulo do OCaml

Eu entendo no OCaml existem conceitos deinterfaces emodule.

E eu entendo como usá-los agora.

No entanto, o que não entendo é como utilizá-los totalmente.

Por exemplo, em Java, digamos que temos uma interfaceMap e nós também temosHashtable eHashMap que implementarMap.

No código, posso fazer como:

Map m = new Hashtable();
m.put("key", value);

Algum dia, se eu mudar de idéia, posso mudar paraHashmap muito rapidamente mudandoMap m = new Hashtable(); paraMap m = new HashMap();, certo?

Mas como posso fazer isso facilmente no Ocaml?

Por exemplo, eu tenhoMapSig e 'HashMap: MapSigand "Hashtable:MapSig no OCaml.

Como posso alterar a implementação facilmente?

Eu não acho que posso porque no OCaml eu tenho que fazer como:

let m = Hashtable.create ();;

Hashtable.put m key value;;

se eu quiser usarHashMap em vez disso, eu tenho que substituir cadaHashtable comHashMap no código, certo?

Editar:

Eu não estou apenas procurando uma maneira de criar um alias para os módulos. Eu também considero a validade das implementações, ou seja, se a implementação segue a interface desejada.

Por exemplo, acima do exemplo Java, somente seHashMap implementouMap interface, eu posso substituirHashtable comHashMap. caso contrário, o compilador Java irá reclamar.

mas se eu fizermodule M = Hashtable no OCaml, e seHashMap não segueMapSig e eu substituoHashtable comHashMap, o que vai acontecer? Eu acho que o compilador não vai reclamar, certo?

questionAnswers(2)

yourAnswerToTheQuestion