كيف يمكنني استخدام المكتبة قائمة انتظار في SML / NJ

StackOverflow https://stackoverflow.com/questions/196382

  •  10-07-2019
  •  | 
  •  

سؤال

وأنا أرى أن 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
- 

نصائح أخرى

وليس لدي إجابة كاملة بالنسبة لك ولكن يمكنني أن أشير لكم في الاتجاه الصحيح. يجب أن قمت بالبحث باستخدام إدارة مجموعة (CM) التي بنيت في لSML / NJ. يمكنك التفكير في الأمر كما جعل لSML.

لاستخدام المكتبة من مكتبة SML / NJ لك ثم إضافة smlnj-lib.cm إلى ملف وصف CM من التطبيق الخاص بك. ثم يمكنك استخدام الإعلانات مثل طابور من هذه المكتبة.

والموقع smlnj لديه بعض الوثائق حول مدير تجميع .

وهذا الأمل على الأقل نقطة لكم في الاتجاه الصحيح.

إذا كنت تريد إنشاء قائمة انتظار صحيح، استخدام التعليمات البرمجية التالية. استبدال 'الباحث' مع نوع البيانات التي تريدها.

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

كل شيء آخر يمكن العثور هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top