2008-10-13 9 views

ответ

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 a структура. Это позволяет избежать ввода 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

У меня нет полного ответа для вас, но я могу указать вам в правильном направлении. Вы должны искать с помощью менеджера компиляции (CM), который встроен в SML/NJ. Вы можете думать об этом как о Make for SML.

Чтобы использовать библиотеку из библиотеки SML/NJ, вы затем добавляете smlnj-lib.cm в файл описания CM вашего приложения. Затем вы можете использовать объявления, такие как Queue из этой библиотеки.

На веб-сайте smlnj есть документация о compilation manager.

Надеюсь, это по крайней мере указывает на то, что вы в правильном направлении.

0

Если вы хотите создать целочисленную очередь, используйте следующий код. Замените 'int' на нужный тип данных.

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

Все остальное можно найти here.