31 lines
464 B
Elixir
31 lines
464 B
Elixir
|
|
defmodule Geometry do
|
||
|
|
def rectangle_area(a, b) do
|
||
|
|
a * b
|
||
|
|
end
|
||
|
|
|
||
|
|
def rectangle_area_condensed(a, b), do: a * b
|
||
|
|
end
|
||
|
|
|
||
|
|
defmodule Rectangle do
|
||
|
|
def area(a, b), do: a * b
|
||
|
|
def area(a), do: area(a, a)
|
||
|
|
end
|
||
|
|
|
||
|
|
defmodule GeometryMultiClause do
|
||
|
|
def area({:rectangle, a, b}) do
|
||
|
|
a * b
|
||
|
|
end
|
||
|
|
|
||
|
|
def area({:square, a}) do
|
||
|
|
a * a
|
||
|
|
end
|
||
|
|
|
||
|
|
def area({:circle, r}) do
|
||
|
|
r * r * 3.14159
|
||
|
|
end
|
||
|
|
|
||
|
|
def area(unknown) do
|
||
|
|
{:error, {:unkown_shape, unknown}}
|
||
|
|
end
|
||
|
|
end
|