2014-06-23 6 views
1

Leonardo Borges는 "Functional Composition With Monads, Kleislis and Functors"이라는 우수한 게시물을 작성했습니다.'리프트가지도와 거의 비슷하다'는 것은 무엇을 의미합니까?

그것은 그는 코멘트 :

마크가 리프트 꽤 많은지도 그러나 반대의 인수와 동일 나에게 지적했다. , 그것은 리프트가 거의 맵과 동일하다 '고 무슨 뜻한다

val g = make(_:Int).map(parts) 

내 질문 :

val f = Functor[Option].lift(parts) compose make 

가에 리팩토링 할 수 있습니다

이 있음을 의미? ' scalaz functor code에서

+0

"지도"가 그냥 뒤집힌 '리프트'라고 말하고 싶습니다. 스칼라 만이 논쟁 순서를 사용하는 유일한 언어입니다 : 파이썬의'map', 하스켈의'fmap', 리스프의'mapcar'를 생각해보십시오. 그들은 모두'lift'의 순서에 있습니다. 스칼라가 표기법을 바꾸는 경향이 있기 때문일 것입니다. – phg

답변

3

:

def map[A, B](fa: F[A])(f: A => B): F[B]

def lift[A, B](f: A => B): F[A] => F[B] = map(_)(f)

참고 : 리프트는 단지

는 대부분 사람들이이 기능 프로그래밍을 시작할 때지도 (인수 역)의 관점에서 정의된다 사물의 연속에 걸쳐 함수를 매핑하는 것으로 map에 소개되었지만, 일반적으로 map은 mor 추상 개념을 functor 관련.