List Intuition
import IEx.Helpers
List Operators
- append item to a list
- got the first element of a list (head or
hd) - get the rest of a list, discarding the first (tail or
tl)
Build list with tuples
Use our list in a program
defmodule Tlist do
# Our list should look like {3, 2, 1, 137}
def empty, do: {}
def add(tlist, item) do
{item, tlist}
end
def head({first, _rest}) do
first
end
def tail({_first, rest}) do
rest
end
end
{:module, Tlist, <<70, 79, 82, 49, 0, 0, 7, ...>>, {:tail, 1}}
Try it out!
tlist = {3, {2, {1, {}}}}
{3, {2, {1, {}}}}
import Tlist
Tlist
tlist |> head
3
tlist |> tail |> head
2
tlist |> tail |> tail |> head
1
Within a program
counts and sum with recursion
defmodule TlistFunctions do
def count({}) do
0
end
def count({_item, items}) do
1 + count(items)
end
def sum({}) do
0
end
def sum({number, numbers}) do
number + sum(numbers)
end
end
{:module, TlistFunctions, <<70, 79, 82, 49, 0, 0, 6, ...>>, {:sum, 1}}
import Tlist
tlist = empty() |> add(1) |> add(2) |> add(3)
# TlistFunctions.count(tlist)
%{
sum: TlistFunctions.sum(tlist),
count: TlistFunctions.count(tlist)
}
%{count: 3, sum: 6}