Packages
journey
0.10.37
0.10.58
0.10.57
0.10.56
0.10.55
0.10.54
0.10.53
0.10.52
0.10.51
0.10.50
0.10.49
0.10.48
0.10.47
0.10.46
0.10.45
0.10.44
0.10.43
0.10.41
0.10.40
0.10.39
0.10.38
0.10.37
0.10.36
0.10.35
0.10.34
0.10.33
0.10.32
0.10.31
0.10.30
0.10.29
0.10.28
0.10.27
0.10.26
0.10.25
0.10.24
0.10.23
0.10.22
0.0.9
retired
0.0.8
0.0.7
0.0.6
0.0.5
0.0.3
0.0.2
Journey is a library for defining and running durable workflows with persistence, reliability, and scalability.
Current section
Files
Jump to
Current section
Files
lib/factorial.ex
defmodule Factorial do
@moduledoc """
Computes the factorial of a non‑negative integer.
Returns :error for negative inputs.
"""
@spec factorial(integer) :: integer | :error
def factorial(n) when is_integer(n) and n >= 0 do
do_factorial(n, 1)
end
def factorial(_), do: :error
@spec do_factorial(integer, integer) :: integer
defp do_factorial(0, acc), do: acc
defp do_factorial(n, acc) when n > 0, do: do_factorial(n - 1, acc * n)
end