在C#中重命名高阶列表操作背后的理由是什么? (示例:map
- > Select
,filter
- > Where
,fold
- > Aggregate
)
答案 0 :(得分:5)
LINQ尝试对熟悉SQL的人大致熟悉,其中投影是选择等等。当然,您可以编写自己的扩展方法,其名称也适合。
答案 1 :(得分:5)
关于元问题......
功能编程社区和主流命令式编程社区已经相互隔离了很长时间。结果,存在基本的词汇差异;例如,像“多态”这样的常用术语对于每个组来说意味着完全不同的东西(参数多态性,对于FP-ers来说是a.k.a.“泛型”或“模板”;而对于其余的则是亚型多态性。)
询问名称背后的基本原理(如果有的话)通常会产生一个简单的答案 - 根据“本地文化”命名。在C#中,LINQ是一种类似SQL的查询语言,因此它看起来很像SQL。
但是问这个问题大致类似于前往西班牙,并询问每个人称他的房子为“mi casa”的理由是什么。 (“你是什么意思我为什么称之为?这就是所谓的!你的意思是你称它为不同的东西?”)
答案 2 :(得分:2)
不是答案,但值得一提:
有关LINQ(如C#/ Enumerable
)和F#Seq
函数(主要遵循更传统的函数名称)之间的'解码器环'转换,请参阅http://blogs.msdn.com/b/jaredpar/archive/2008/12/02/mapping-linq-to-f.aspx。
答案 3 :(得分:1)
嗯,IMO,“fold”是“Aggregate”的一个非常可怕的名字。吓坏了数学人。 :)尽管C#名称更符合SQL / LINQ。