scalaz では、endo
関数 inFunction1Ops
は次のように実装されます。
def endo(implicit ev: R =:= T): Endo[T] =
Endo.endo(t => ev(self(t)))
と同じように動作するEndo.endo
self... as を単純に取るだけでなく、関数の本体でなぜ興味があります。Endo.endo(self)
Endo.endo(t=> ev(self(t)))
これが私の模倣の実装であり、2つの間に違いはありません。私は何か見落としてますか?
def endo[R, T](f: R => T)(implicit ev: T =:= R) = (x: R)=> ev(f(x))
def endo2[R, T](f: R => T)(implicit ev: T =:= R) = f
また、最初の実装では実行時にオーバーヘッドが追加されませんか?