Stack

GitHub   Edit on GitHub

A stack is a LIFO (last-in-first-out) data structure where new values are added, retrieved, and removed from the end.

The default implementation is mutable, but an immutable stack implementation is available in the Immutable submodule.

Added in 0.3.0 No other changes yet.
1
from "stack" include Stack

Types

Type declarations included in the Stack module.

Stack.Stack

1
type Stack<a>

A mutable LIFO (last-in-first-out) data structure.


Values

Functions and constants included in the Stack module.

Stack.make

Added in 0.6.0 No other changes yet.
1
make : (?size: Number) => Stack<a>

Creates a new stack with an initial storage of the given size. As values are added or removed, the internal storage may grow or shrink. Generally, you won’t need to care about the storage size of your map and can use the default size.

Parameters:

param type description
?size Number The initial storage size of the stack

Returns:

type description
Stack<a> An empty stack

Stack.isEmpty

Added in 0.6.0 No other changes yet.
1
isEmpty : (stack: Stack<a>) => Bool

Checks if the given stack contains no items.

Parameters:

param type description
stack Stack<a> The stack to check

Returns:

type description
Bool true if the stack has no items or false otherwise

Stack.size

Added in 0.6.0 No other changes yet.
1
size : (stack: Stack<a>) => Number

Computes the size of the input stack.

Parameters:

param type description
stack Stack<a> The stack to inspect

Returns:

type description
Number The count of the items in the stack

Stack.peek

Added in 0.6.0 No other changes yet.
1
peek : (stack: Stack<a>) => Option<a>

Provides the value at the top of the stack, if it exists.

Parameters:

param type description
stack Stack<a> The stack to inspect

Returns:

type description
Option<a> Some(value) containing the value at the top of the stack or None otherwise.

Stack.push

Added in 0.6.0 No other changes yet.
1
push : (value: a, stack: Stack<a>) => Void

Adds a new item to the top of the stack.

Parameters:

param type description
value a The item to be added
stack Stack<a> The stack being updated

Stack.pop

Added in 0.6.0 No other changes yet.
1
pop : (stack: Stack<a>) => Option<a>

Removes the item at the top of the stack.

Parameters:

param type description
stack Stack<a> The stack being updated

Returns:

type description
Option<a> The element removed from the stack

Stack.clear

Added in 0.6.0 No other changes yet.
1
clear : (stack: Stack<a>) => Void

Clears the stack by removing all of its elements

Parameters:

param type description
stack Stack<a> The stack to clear

Stack.copy

Added in 0.6.0 No other changes yet.
1
copy : (stack: Stack<a>) => Stack<a>

Produces a shallow copy of the input stack.

Parameters:

param type description
stack Stack<a> The stack to copy

Returns:

type description
Stack<a> A new stack containing the elements from the input

Stack.Immutable

An immutable stack implementation.

Types

Type declarations included in the Stack.Immutable module.

Stack.Immutable.ImmutableStack

1
type ImmutableStack<a>

ImmutableStacks are immutable data structures that store their data in a List.

Values

Functions and constants included in the Stack.Immutable module.

Stack.Immutable.empty

Added in 0.6.0
versionchanges
0.5.4Originally a module root API
1
empty : ImmutableStack<a>

An empty stack.

Stack.Immutable.isEmpty

Added in 0.6.0
versionchanges
0.3.0Originally a module root API
1
isEmpty : (stack: ImmutableStack<a>) => Bool

Checks if the given stack contains no items.

Parameters:

param type description
stack ImmutableStack<a> The stack to check

Returns:

type description
Bool true if the stack has no items or false otherwise

Stack.Immutable.peek

Added in 0.6.0
versionchanges
0.3.0Originally a module root API
0.3.1Rename from `head` to `peek`
1
peek : (stack: ImmutableStack<a>) => Option<a>

Provides the value at the top of the stack, if it exists.

Parameters:

param type description
stack ImmutableStack<a> The stack to inspect

Returns:

type description
Option<a> Some(value) containing the value at the top of the stack or None otherwise.

Stack.Immutable.push

Added in 0.6.0
versionchanges
0.3.0Originally a module root API
1
push : (value: a, stack: ImmutableStack<a>) => ImmutableStack<a>

Adds a new item to the top of the stack.

Parameters:

param type description
value a The item to be added
stack ImmutableStack<a> The stack being updated

Returns:

type description
ImmutableStack<a> A new stack with the item added to the end

Stack.Immutable.pop

Added in 0.6.0
versionchanges
0.3.0Originally a module root API
1
pop : (stack: ImmutableStack<a>) => ImmutableStack<a>

Removes the item at the top of the stack.

Parameters:

param type description
stack ImmutableStack<a> The stack being updated

Returns:

type description
ImmutableStack<a> A new stack with the last item removed

Stack.Immutable.size

Added in 0.6.0
versionchanges
0.3.2Originally a module root API
1
size : (stack: ImmutableStack<a>) => Number

Computes the size of the input stack.

Parameters:

param type description
stack ImmutableStack<a> The stack to inspect

Returns:

type description
Number The count of the items in the stack
This is a notification!