Algae v1.2.3 Algae.Tree.Rose 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

Link to this type

forest() View Source
forest() :: [t()]

Link to this type

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

Link to this section Functions

Link to this function

layer(tree, rose) View Source
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
            }
          ]
        }
      ]
    }
  ]
}

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
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}
  ]
}