我看到 SML/NJ 包含一个队列结构。我不知道如何使用它。如何使用 SML/NJ 提供的附加库?
Joshua
问问题
1750 次
3 回答
3
SML '97 没有指定该Queue
结构,但它存在于 SML/NJ 的顶级环境中。
$ sml 新泽西州标准 ML v110.69 [构建:Fri Mar 13 16:02:47 2009] - 队列.mkQueue(); [自动加载] [库 $SMLNJ-LIB/Util/smlnj-lib.cm 稳定] [自动加载完成] 标准输入:1.1-1.17 警告:类型 vars 未泛化,因为 值限制被实例化为虚拟类型(X1,X2,...) val it = - : ?.X1 Queue.queue -
你可以open
一个结构。这可以让您避免Queue.
在所有内容前面打字。但是,不鼓励在顶层执行此操作,因为它会污染环境并使您所依赖的东西变得不那么明显。(在另一种结构中,我会说在某些情况下它可能是可以接受的。)
$ sml 新泽西州标准 ML v110.69 [构建:Fri Mar 13 16:02:47 2009] - 开放队列; [自动加载] [库 $SMLNJ-LIB/Util/smlnj-lib.cm 稳定] [自动加载完成] 开放队列 输入'一个队列 异常出队 val mkQueue : unit -> '一个队列 val clear : '一个队列 -> 单元 val isEmpty : '一个队列 -> bool val enqueue : 'a queue * 'a -> unit val dequeue : '一个队列 -> 'a val next : '一个队列 -> '一个选项 val delete : 'a queue * ('a -> bool) -> unit val head : '一个队列 -> 'a val peek : '一个队列 -> '一个选项 val length : '一个队列-> int val 内容:'一个队列->'一个列表 val app : ('a -> unit) -> 'a queue -> unit val map : ('a -> 'b) -> 'a 队列 -> 'b 队列 val foldl : ('a * 'b -> 'b) -> 'b -> 'a 队列 -> 'b val foldr : ('a * 'b -> 'b) -> 'b -> 'a 队列 -> 'b - mk队列(); 标准输入:3.1-3.11 警告:类型 vars 未泛化,因为 值限制被实例化为虚拟类型(X1,X2,...) val it = - : ?.X1 队列 -
于 2009-07-01T17:38:26.250 回答
1
我没有完整的答案给你,但我可以为你指出正确的方向。您应该使用 SML/NJ 内置的编译管理器 (CM) 进行查找。您可以将其视为 Make for SML。
要使用 SML/NJ 库中的库,您需要将 smlnj-lib.cm 添加到应用程序的 CM 描述文件中。然后,您可以使用该库中的 Queue 等声明。
smlnj 网站上有一些关于编译管理器的文档。
希望这至少可以为您指明正确的方向。
于 2008-10-21T23:59:44.810 回答
0
于 2013-08-24T19:28:10.613 回答