Skip to content

Instantly share code, notes, and snippets.

@petros
Created August 31, 2022 15:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save petros/0154390a5bd57a27c963371a36cbc02b to your computer and use it in GitHub Desktop.
Save petros/0154390a5bd57a27c963371a36cbc02b to your computer and use it in GitHub Desktop.
Stack Underflow - Elixir - Exercism
defmodule RPNCalculator.Exception do
defmodule DivisionByZeroError do
defexception message: "division by zero occurred"
end
defmodule StackUnderflowError do
defexception message: "stack underflow occurred"
@impl true
def exception(value) do
case value do
[] ->
%StackUnderflowError{}
_ ->
%StackUnderflowError{message: "stack underflow occurred, context: " <> value}
end
end
end
def divide(stack) when length(stack) < 2, do: raise(StackUnderflowError, "when dividing")
def divide([0, _nominator] = _stack), do: raise(DivisionByZeroError)
def divide([divisor, nominator]) when divisor != 0, do: nominator / divisor
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment