为什么Scala和C#lambdas双箭头?

Aiv*_*var 9 c# programming-languages scala

有谁知道一些背景,为什么Scala和C#使用双箭头(=>)代替lambdas而不是单箭头( - >)?

单箭头在文献中比较常见,用于Haskell,O'Caml,F#,Groovy等等,IMO也看起来更好:)

dig*_*All 21

在C#中,可能是因为->运算符已用于不安全代码(LINK)


Mar*_*sky 15

Pizza,有点像Scala的前身 - >在函数类型中.我记得C++程序员对这种符号的选择感到困惑.这是Scala选择=> AFAIRC的主要原因.似乎C#人经历了同样的推理.

  • 好吧,C#人员不能使用` - >`箭头,因为它在C#中与C++中的相同.由于Pizza和Scala没有指针解引用运算符,因此推理并不完全相同. (2认同)

Rex*_*err 10

在Scala中,还有"地图箭头",表示从项目a到另一个项目的映射b.使用=>lambdas释放了->类似的东西Map(1 -> "One", 2 -> "Two"),正如其他人指出的那样,=>它不是C#和Scala独有的.

  • 当然,你也可以推断,如果他们使用了Perl的`=>`map箭头,那就可以释放lambdas的` - >`箭头. (6认同)