Algae.Tree.Rose (Algae v1.3.1) View Source

A tree with any number of nodes at each level

Examples

%Algae.Tree.Rose{
  rose: 42,
  forest: [
    %Algae.Tree.Rose{
      rose: "hi"
    },
    %Algae.Tree.Rose{
      forest: [
        %Algae.Tree.Rose{
          rose: 0.4
        }
      ]
    },
    %Algae.Tree.Rose{
      rose: "there"
    }
  ]
}

Link to this section Summary

Functions

Wrap another tree around an existing one, relegating it to the forest.

Create a simple Algae.Rose tree, with an empty forest and one rose.

Create an Algae.Rose tree, passing a forest and a rose.

Link to this section Types

Specs

forest() :: [t()]

Specs

rose() :: any()

Specs

t() :: %Algae.Tree.Rose{forest: [t()], rose: any()}

Link to this section Functions

Specs

layer(t(), rose()) :: t()

Wrap another tree around an existing one, relegating it to the forest.

Examples

iex> 55
...> |> new()
...> |> layer(42)
...> |> layer(99)
...> |> layer(6)
%Algae.Tree.Rose{
  rose: 6,
  forest: [
    %Algae.Tree.Rose{
      rose: 99,
      forest: [
        %Algae.Tree.Rose{
          rose: 42,
          forest: [
            %Algae.Tree.Rose{
              rose: 55
            }
          ]
        }
      ]
    }
  ]
}

Specs

new(rose()) :: t()

Create a simple Algae.Rose tree, with an empty forest and one rose.

Examples

iex> new(42)
%Algae.Tree.Rose{
  rose: 42,
  forest: []
}
Link to this function

new(rose \\ nil, forest \\ [])

View Source

Specs

new(any(), [t()]) :: t()
new(rose(), forest()) :: t()

Create an Algae.Rose tree, passing a forest and a rose.

Examples

iex> new(42, [new(55), new(14)])
%Algae.Tree.Rose{
  rose: 42,
  forest: [
    %Algae.Tree.Rose{rose: 55},
    %Algae.Tree.Rose{rose: 14}
  ]
}
Link to this function

new_partial(rose, forest)

View Source