Algae v1.1.0 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}
  ]
}