defmodule BankAcount do
def f1(stack) do
number = :rand.uniform(9) + 1
case rem(number, 2) do
0 -> ["ErrBankAccountEmpty", [:f1 | stack]]
_ -> ["ErrInvestmentLost", [:f1 | stack]]
end
end
def f2(stack) do
f1([:f2 | stack])
end
def f3(stack) do
f1([:f3 | stack])
end
def f4(stack) do
number = :rand.uniform(9) + 1
case rem(number, 2) do
0 -> f2([:f4 | stack])
_ -> f3([:f4 | stack])
end
end
def main() do
case f4([:main]) do
[_err, [:f1, :f2, :f4, :main]] -> "Aand it's gone"
[_err, [:f1, :f3, :f4, :main]] -> "The money in your account didn't do well"
_err -> "This line is for bank members only"
end
|> raise
end
end
BankAcount.main()