Packages

An example of a simple HTTP server built from scratch with Elixir.

Current section

Files

Jump to
atparkweb_servo lib recurse.ex
Raw

lib/recurse.ex

defmodule Recurse do
@moduledoc """
Simple recursive looping examples
"""
@doc """
Sum a list of integers
## Examples
iex> Recurse.sum([1, 2, 3])
6
"""
def sum(xs) do
sum_r(xs, 0)
end
defp sum_r([h | t], total) do
sum_r(t, h + total)
end
defp sum_r([], total), do: total
@doc """
Triple each integer in a list and return a new list
## Examples
iex> Recurse.triple([1, 2, 3])
[3, 6, 9]
iex> Recurse.triple([10, 20, 30])
[30, 60, 90]
"""
def triple(xs) do
triple_r(xs, [])
end
defp triple_r([h | t], result) do
triple_r(t, [h * 3 | result])
end
defp triple_r([], result), do: result |> Enum.reverse
def my_map(xs, iterator) do
my_map_r(xs, iterator, [])
end
defp my_map_r([h | t], iterator, result) do
my_map_r(t, iterator, [iterator.(h) | result])
end
defp my_map_r([], _, result), do: result |> Enum.reverse
end