aonyx/graph/node

Types

Represents a node in the graph identified by a key and containing an optional value.

pub type Node(key, value) {
  Node(
    key: key,
    value: value,
    outgoing: set.Set(key),
    incoming: set.Set(key),
  )
}

Constructors

  • Node(
      key: key,
      value: value,
      outgoing: set.Set(key),
      incoming: set.Set(key),
    )
pub type NodeKey(key) {
  NodeKey(key: key)
}

Constructors

  • NodeKey(key: key)

Values

pub fn get_key(node: Node(key, value)) -> NodeKey(key)

Extracts the key from a node.

pub fn get_neighbors(node: Node(key, value)) -> set.Set(key)

Returns a set union of keys of all direct neighbors of a given node in both directions.

Examples

let node = new("A")
  |> with_outgoing(["B", "C"])
  |> with_incoming(["D"])

get_neighbors(node)
// -> Set(["B", "C", "D"])
pub fn get_neighbors_in(node: Node(key, value)) -> set.Set(key)

Returns a set of keys of all direct neighbors of a given node via incoming edges.

Examples

let node = new("A")
  |> with_outgoing(["B", "C"])
  |> with_incoming(["D", "E"])

get_neighbors_in(node)
// -> Set(["D", "E"])
pub fn get_neighbors_out(node: Node(key, value)) -> set.Set(key)

Returns a set of keys of all direct neighbors of a given node via outgoing edges.

Examples

let node = new("A")
  |> with_outgoing(["B", "C"])
  |> with_incoming(["D"])

get_neighbors_out(node)
// -> Set(["B", "C"])
pub fn new(key: key, value: value) -> Node(key, value)

Creates a node with the given key, without a value.

Examples

new("A", "Node A")
// -> Node(key: "A", value: "Node A", outgoing: Set([]), incoming: Set([]))
pub fn replace_value(
  node: Node(key, value),
  value: value,
) -> Node(key, value)

Sets the value of a node.

Examples

let node = new("A")
with_value(node, "Node A")
// -> Node(key: "A", value: Some("Node A"), outgoing: Set([]), incoming: Set([]))
pub fn with_incoming(
  node: Node(key, value),
  incoming: List(key),
) -> Node(key, value)

Sets the incoming edges of a node.

Examples

let node = new("A")
with_incoming(node, ["B", "C"])
// -> Node(key: "A", value: None, outgoing: Set([]), incoming: Set(["B", "C"]))
pub fn with_outgoing(
  node: Node(key, value),
  outgoing: List(key),
) -> Node(key, value)

Sets the outgoing edges of a node.

Examples

let node = new("A")
with_outgoing(node, ["B", "C"])
// -> Node(key: "A", value: None, outgoing: Set(["B", "C"]), incoming: Set([]))
Search Document