【发布时间】:2016-03-05 20:14:32
【问题描述】:
有没有办法让函数“类型”在 Elixir 中实现协议?我正在玩自定义的Functorprotocol,想知道是否可以让函数实现它(忽略 Elixir 类型系统的所有限制)。
实现(如果 function 有一个类型)将是
defimpl Category.Functor, for: function do
def fmap(f, g), do: &(g.(f.(x))
end
因为你可以做到
f_2x_plus_1 = &(&1 * 2) |> Functor.fmap(&(&1 + 1))
f_2x_plus_1.(1) == 3
并不是说我会把它用于任何严肃的事情,只是想知道。
【问题讨论】:
-
这是 Elixir 中的一个类别库github.com/robot-overlord/witchcraft 看看他们做了什么可能会有所帮助。
标签: elixir