   defp to_word(n) when n < 0, do: ["negative", to_word(-n)]
   defp to_word(n) when n < 100, do: [to_word(div(n,10)*10), to_word(rem(n, 10))]
   defp to_word(n) when n < 1_000, do: [to_word(div(n,100)), "hundred", to_word(rem(n, 100))]
+  # dynamically define to_word for thousands and up
   ~w[ thousand million billion trillion quadrillion quintillion sextillion septillion octillion nonillion decillion ]
   |> Enum.zip(2..13)
   |> Enum.each(


  end
end

# Numbers to Words

# Original implementation using binary matching:
# The problem with this version is it's 10 times slower than the one below it, based on some simple benchmarking.
# I've left it in for posterity/educational reasons.

# defmodule NumbersToWords do

