Programming Phoenix LiveView - CRC
Mix.install([
{:kino, "~> 0.7.0"}
])
CRC: constructors, reducers, converters
Constructors create a term of the core type from inputs
Reducers transform a term of the core type to another term of that core type
Converters convert the core type to another type
defmodule Number do
# constructor
def new(string), do: Integer.parse(string) |> elem(0)
# reducer
def add(number, addend), do: number + addend
# converter
def to_string(number), do: Integer.to_string(number)
end
list = [1, 2, 3]
total = Number.new("0")
reducer = &Number.add(&2, &1)
converter = &Number.to_string/1
Enum.reduce(list, total, reducer) |> converter.()
Pipeline
[first, second, third] = list
"0"
|> Number.new()
|> Number.add(first)
|> Number.add(second)
|> Number.add(third)
|> Number.to_string()
|> dbg()