Scala 这是什么意思';lift与map';几乎相同;?

Scala 这是什么意思';lift与map';几乎相同;?,scala,map,functional-programming,lifting,Scala,Map,Functional Programming,Lifting,莱昂纳多·博尔赫斯(Leonardo Borges)写了一篇很好的帖子,名为 他在信中评论说: 马克向我指出,lift和map几乎一样,只是参数相反 这意味着: val f = Functor[Option].lift(parts) compose make 可以重构为: val g = make(_:Int).map(parts) 我的问题是,升力与地图几乎相同是什么意思?来自: defmap[A,B](fa:F[A])(F:A=>B):F[B] def lift[A,B](f:A=>B)

莱昂纳多·博尔赫斯(Leonardo Borges)写了一篇很好的帖子,名为

他在信中评论说:

马克向我指出,lift和map几乎一样,只是参数相反

这意味着:

val f = Functor[Option].lift(parts) compose make
可以重构为:

val g = make(_:Int).map(parts)
我的问题是,升力与地图几乎相同是什么意思?

来自:

defmap[A,B](fa:F[A])(F:A=>B):F[B]

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

注意:lift只是根据map定义的(颠倒参数)


大多数情况下,当人们从函数式编程开始时,他们会将
map
作为一个函数映射到一系列事物上,但是
map
通常是一个与functor相关的更抽象的概念。

我甚至更愿意说
map
只是一个翻转的
lift
。斯卡拉是我所知道的唯一使用这种论据的语言:考虑Python的<代码> map <代码>,Haskell的<代码> FMAP,Lisp的<代码> MAPCAL>代码>…它们都是按lift的顺序排列的。这可能是因为Scala倾向于使用中缀符号。