SML/NJ에 대기열 구조가 포함되어 있습니다. 나는 그것을 사용하는 방법을 알아낼 수 없습니다. SML/NJ에서 제공하는 추가 라이브러리는 어떻게 사용합니까?SML/NJ에서 대기열 라이브러리를 사용하는 방법
3
A
답변
3
Queue
structure은 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 -
1
전적으로 답변을 드릴 수는 없지만 올바른 방향으로 안내해 드릴 수는 있습니다. SML/NJ에 내장 된 컴파일 관리자 (CM)를 사용하여 검색해야합니다. 당신은 Make for SML이라고 생각할 수 있습니다.
SML/NJ 라이브러리의 라이브러리를 사용하려면 smlnj-lib.cm을 응용 프로그램의 CM 설명 파일에 추가하십시오. 그런 다음 해당 라이브러리의 대기열과 같은 선언을 사용할 수 있습니다.
smlnj 웹 사이트에는 compilation manager에 대한 몇 가지 문서가 있습니다.
적어도 올바른 방향으로 안내해주세요.
0
정수 큐를 만들려면 다음 코드를 사용하십시오. 'int'를 원하는 데이터 유형으로 바꿉니다.
val que = Queue.mkqueue(): int Queue.queue
다른 모든 찾을 수 있습니다 here.