SML中哈希表的查找功能

时间:2014-10-13 04:06:23

标签: hashtable lookup sml

我被赋予了一个在SML中为这个哈希表数据类型编写查找函数的赋值;

datatype 'a ht = table of (int * ('a list)) list;

如果表为空并且/或表不存在键,则返回nil。 该函数应该是这个

val lookup = fn : int -> 'a ht -> 'a list

但我不知道如何查看哈希表的每个桶或显示密钥桶的值。我会很感激有关使用何种算法的一些帮助。

例如,该函数应该像这样工作;

-lookup 3 (table [(1, [2,3]), (2, [3,4,5]), (3, [4])]);
  val it = [4] : int list
-lookup 4 (table [(1, [2,3]), (2, [3,4,5]), (3, [4])]);
  val it = [] : int list

1 个答案:

答案 0 :(得分:0)

您的哈希表是成对列表。

for fun lookup n table = ... 首先,您需要一个函数从对列表向下移动到第n个位置。 你可以使用像

这样的东西
case table of
table [] => nil
|table ls => lookup n-1 table (tl ls)

第二个获取值(对中的#2)或通过模式匹配,当递归中查找函数的第二个参数减少为1时,假设您的键按照示例中的顺序排列。 然后回来吧。