模組 Stdlib.Stack

module Stack: Stack

非同步存取

對堆疊進行非同步存取可能會導致佇列狀態無效。因此,對堆疊的並行存取必須同步(例如使用 Mutex.t)。

type !'a t 

包含 'a 型別元素的堆疊型別。

exception Empty

當對空堆疊應用 Stack.popStack.top 時會引發此例外。

val create : unit -> 'a t

回傳一個新的堆疊,初始為空。

val push : 'a -> 'a t -> unit

push x s 將元素 x 加入堆疊 s 的頂端。

val pop : 'a t -> 'a

pop s 移除並回傳堆疊 s 最頂端的元素,若堆疊為空則會引發 Stack.Empty 例外。

val pop_opt : 'a t -> 'a option

pop_opt s 移除並回傳堆疊 s 最頂端的元素,若堆疊為空則回傳 None

val drop : 'a t -> unit

drop s 移除堆疊 s 最頂端的元素,若堆疊為空則會引發 Stack.Empty 例外。

val top : 'a t -> 'a

top s 回傳堆疊 s 最頂端的元素,若堆疊為空則會引發 Stack.Empty 例外。

val top_opt : 'a t -> 'a option

top_opt s 回傳堆疊 s 最頂端的元素,若堆疊為空則回傳 None

val clear : 'a t -> unit

從堆疊中丟棄所有元素。

val copy : 'a t -> 'a t

回傳給定堆疊的副本。

val is_empty : 'a t -> bool

如果給定的堆疊為空,則回傳 true,否則回傳 false

val length : 'a t -> int

回傳堆疊中元素的數量。時間複雜度 O(1)

val iter : ('a -> unit) -> 'a t -> unit

iter f s 依序將 f 應用於 s 的所有元素,從堆疊頂端的元素到堆疊底部的元素。堆疊本身保持不變。

val fold : ('acc -> 'a -> 'acc) -> 'acc -> 'a t -> 'acc

fold f accu s 等同於 (f (... (f (f accu x1) x2) ...) xn),其中 x1 是堆疊的頂端,x2 是第二個元素,而 xn 是最底部的元素。堆疊保持不變。

堆疊與序列

val to_seq : 'a t -> 'a Seq.t

從堆疊頂端到底端迭代。在迭代期間修改堆疊是安全的。

val add_seq : 'a t -> 'a Seq.t -> unit

將序列中的元素新增到堆疊的頂端。

val of_seq : 'a Seq.t -> 'a t

從序列建立一個堆疊。