質問

SML / NJにはキュー構造が含まれていることがわかります。使い方がわかりません。 SML / NJが提供する追加のライブラリを使用するにはどうすればよいですか?

役に立ちましたか?

解決

Queue 構造 >はSML '97では指定されていませんが、SML / NJのトップレベル環境に存在します。

$ sml
Standard ML of New Jersey v110.69 [built: Fri Mar 13 16:02:47 2009]
- Queue.mkQueue ();
[autoloading]
[library $SMLNJ-LIB/Util/smlnj-lib.cm is stable]
[autoloading done]
stdIn:1.1-1.17 Warning: type vars not generalized because of
   value restriction are instantiated to dummy types (X1,X2,...)
val it = - : ?.X1 Queue.queue
- 

構造を open できます。これにより、すべての前に Queue。と入力する必要がなくなります。ただし、トップレベルでこれを行うことは推奨されません。環境を汚染し、依存しているものがはるかにわかりにくくなるためです。 (別の構造内では、状況によっては受け入れられるかもしれません。)

$ sml
Standard ML of New Jersey v110.69 [built: Fri Mar 13 16:02:47 2009]
- open Queue;
[autoloading]
[library $SMLNJ-LIB/Util/smlnj-lib.cm is stable]
[autoloading done]
opening Queue
  type 'a queue
  exception Dequeue
  val mkQueue : unit -> 'a queue
  val clear : 'a queue -> unit
  val isEmpty : 'a queue -> bool
  val enqueue : 'a queue * 'a -> unit
  val dequeue : 'a queue -> 'a
  val next : 'a queue -> 'a option
  val delete : 'a queue * ('a -> bool) -> unit
  val head : 'a queue -> 'a
  val peek : 'a queue -> 'a option
  val length : 'a queue -> int
  val contents : 'a queue -> 'a list
  val app : ('a -> unit) -> 'a queue -> unit
  val map : ('a -> 'b) -> 'a queue -> 'b queue
  val foldl : ('a * 'b -> 'b) -> 'b -> 'a queue -> 'b
  val foldr : ('a * 'b -> 'b) -> 'b -> 'a queue -> 'b
- mkQueue ();
stdIn:3.1-3.11 Warning: type vars not generalized because of
   value restriction are instantiated to dummy types (X1,X2,...)
val it = - : ?.X1 queue
- 

他のヒント

完全な答えはありませんが、正しい方向に向けることができます。 SML / NJに組み込まれているコンパイルマネージャー(CM)を使用して検索する必要があります。 Make for SMLと考えることができます。

SML / NJライブラリのライブラリを使用するには、アプリケーションのCM記述ファイルにsmlnj-lib.cmを追加します。次に、そのライブラリのQueueなどの宣言を使用できます。

smlnj Webサイトには、コンパイルマネージャーに関するドキュメントがあります。

これが少なくともあなたを正しい方向に向けることを願っています。

整数のキューを作成する場合は、次のコードを使用します。 'int'を必要なデータ型に置き換えます。

val que = Queue.mkqueue(): int Queue.queue

他のすべてはこちらにあります

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top