witchcrafters / type_class

(Semi-)principled type classes for Elixir
https://hex.pm/packages/type_class
MIT License
140 stars 16 forks source link

Remove TypeClass.Utility.Module.append/2 #30

Closed toraritte closed 5 years ago

toraritte commented 5 years ago

Its functionality seems to be redundant with Module.concat/2, and has only been used in theTypeClass.Property module.

There are not tests in TypeClass, but I created a mix project, and added Algae as a dependency which compiled without any issue. Tried out the below snippet as well, no problems:

defmodule Name do
  import Algae
  import TypeClass
  use Witchcraft
  alias __MODULE__, as: N

  defdata do
    name :: String.t()
  end

  definst Witchcraft.Functor, for: __MODULE__ do
    @force_type_instance true
    def map(%{name: name}, f) do
      N.new(f.(name))
    end
  end

  def add_title(%__MODULE__{} = name, title) do
    name ~> &Kernel.<>(title, &1)
  end
end