Я предполагаю, что идея состоит в том, чтобы создать строки сопоставления таблицы для целых чисел. Тогда вы хотите написать его тип как (string, int) hash_table
(Тип hash_table
это тип с двумя параметрами, которые написаны так в ML).
Но вам также нужна хэш -функция hash : string -> word
и функция равенства eq : string * string -> bool
над строками, чтобы обеспечить mkTable
. Анкет Для последнего вы можете просто использовать op=
, для первого вы можете использовать HashString.hashString
Из соответствующего модуля.
Так,
val ht : (string, int) HashTable.hash_table = HashTable.mkTable(HashString.hashString, op=)(17, Domain)
должно сработать.
Однако я должен отметить, что хэш -таблицы, как правило, чрезмерно чрезмерно используются, и чаще всего они являются неправильной структурой данных. Это особенно верно в функциональном программировании, поскольку они являются современной структурой данных. Обычно вам лучше (и потенциально еще более эффективно), используя какую-то карту на основе дерева, например, RedBlackMapFn
из библиотеки SML/NJ.