Slide 44
Slide 44 text
defmodule ElixirTypes do
@type balance :: integer()
@type transaction :: {atom(), integer()}
def run do
balance = 50
transaction = pay(:andra, 20)
calculate_balance(balance, money(transaction))
end
@spec pay(atom, integer) :: transaction
def pay(name, amount), do: {name, amount}
@spec money(transaction) :: integer
def money({amount, _name}), do: amount
@spec calculate_balance(integer, integer) :: balance
def calculate_balance(a, b), do: a - b
end