使用ORD_MAP作为SML / NJ中的哈希表

时间:2012-08-30 14:45:22

标签: hashmap structure signature smlnj

我正在尝试在ML中实现类似于哈希表的东西,但我想使用列表作为键。我想我可以使用ORD_MAP结构,但是我想为ORD_KEY签名提供我自己的结构,这样我就可以使用列表作为ord_keys,但我找不到一种方法来做到这一点。怎么可能呢?

2 个答案:

答案 0 :(得分:3)

ORD_MAP和ORD_KEY是签名。如果您希望能够使用地图,则需要特定的实现。例如:

structure Key =
  struct
    type ord_key = int
    val compare = Int.compare
  end
structure Map = RedBlackMapFn (Key)

然后,你可以这样做:

  - Map.singleton (1, "foo");
   val it = - : string map
   - Map.find (it, 1);
   val it = SOME "foo" : string option
   -   

希望有所帮助!这些接口的文档是: http://www.smlnj.org/doc/smlnj-lib/Manual/toc.html

答案 1 :(得分:0)

我认为回答你的问题的一个例子在于康奈尔大学的讲座: Cornell's Lecture