을 이해하지 못하고, Function1Ops
의 endo
기능은이 방법으로 구현됩니다 Endo.endo
함수의 본문에, 그냥 단순히 자신을 복용하는 이유가 scalaz 엔도 기능을 scalaz에서
def endo(implicit ev: R =:= T): Endo[T] =
Endo.endo(t => ev(self(t)))
내가 호기심을 ... Endo.endo(self)
으로, 이는 Endo.endo(t=> ev(self(t)))
과 동일하게 동작합니다.
여기에 제 모방 구현이 있는데 두 경우에는 차이가 없습니다. 내가 뭐 놓친 거 없니?
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
게다가 첫 번째 구현은 런타임에 오버 헤드를 추가하지 않습니까?
이런 종류의 질문을하는 가장 좋은 곳은 https://groups.google.com/forum/?fromgroups#!forum/scalaz 메일 링리스트입니다. #[email protected]도 이런 종류의 질문을 제기 할 수있는 적절한 곳입니다. github 레포 (https://github.com/scalaz/scalaz)로 끌어 오기 요청을 보낼 수도 있습니다. – folone