   Please note that all the modules defined in the same file as `module`
   are recompiled and reloaded.
   """
-  def r(module) do
+  def r(module) when is_atom(module) do
     case do_r(module) do
       mods when is_list(mods) -> { module, mods }
       other -> other

  end

  @doc """
  Prints the list of all loaded modules with paths to their corresponding .beam
  files.
  """
  def m do
    all    = Enum.map :code.all_loaded, fn { mod, file } -> { inspect(mod), file } end

      c "baz.ex"
      #=> [Baz]
  """
  def c(files, path // ".") when is_binary(path) do
    files = List.wrap(files)

    unless Enum.all?(files, &is_binary/1) do
      raise ArgumentError, message: "expected a binary or a list of binaries as argument"
    end

    { erls, exs } = Enum.partition(files, &String.ends_with?(&1, ".erl"))

    modules = Enum.map(erls, fn(source) ->
      { module, binary } = compile_erlang(source)
