Current section
Files
Jump to
Current section
Files
lib/functor/law.ex
defmodule Functor.Law do
@moduledoc false
use Monad.Operators
# fmap id ≡ id
@doc false
def identity?(functor) do
((& &1) <|> functor) == functor
end
# fmap (f . g) ≡ fmap f . fmap g
@doc false
def composition?(functor, fun1, fun2) do
((& fun1.(fun2.(&1))) <|> functor) == (fun1 <|> (fun2 <|> functor))
end
end