Current section

Files

Jump to
monadex lib functor law.ex
Raw

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