当前在线人数12760
首页 - 分类讨论区 - 电脑网络 - 葵花宝典版 -阅读文章
未名交友
[更多]
[更多]
文章阅读:FP in C# or F#
[同主题阅读] [版面: 葵花宝典] [作者:tan00001] , 2014年11月30日00:05:31
tan00001
进入未名形象秀
我的博客
[上篇] [下篇] [同主题上篇] [同主题下篇]

发信人: tan00001 (声明), 信区: Programming
标  题: FP in C# or F#
发信站: BBS 未名空间站 (Sun Nov 30 00:05:31 2014, 美东)

F#是为FP量身订做的,但讨论FP时却无人提及:

    http://www.tryfsharp.org/Learn

F#在企业中并不受欢迎,因为维护成本太高:大部分码工对FP不熟悉。

实际上在真正需要FP时,许多FP的元素已经渗入C#.例如:我们可以用IQueryable<T>来
建立一个SQL Query:

IQueryable<T> query1 = dataContext.Ts;
query1 = query1.Where(t => t.TimeStamp >= DateTime.UTCNow.AddDays(-7));
IQueryable<S> query2 = dataContext.Ss;
query2 = query2.Where(s => s.Minimum >= 0);
query1 = query1.Join(query2, t => t.SID, s => s.ID,(t, s)=> new { s.ID, t
.TimeStamp });
query1 = query1.OrderBy(r => r.TimeStamp).Take(1000);

经过这么半天的折腾,我们并未从SQL Server读出任何东西。query1只是一个包含了
Join和Where Clause的SQL Query,外加Sort。只有当我们真正用query1做enumeration
时,query1才会被Compile成“SELECT TOP 1000 s.ID, t.TimeStamp FROM ...”。我
觉得这其实已经是FP了。

当年Alpha CPU问世后,许多人认为RISC CPU会大行其道,X86的CISC架构将很快消亡。
但出乎许多人的意料,X86变得面目全非,融合了许多RISC的东西,而Alpha CPU却进入
了坟墓。而今FP恐怕也会重蹈此覆辙。如果你要在你的应用里做SQL Query,而Query的
条件会因使用者的要求而千变万化,那么用IQueryable<T>做FP操作也许是你必须做的
。但F#?还是算了吧。

尽管EDM的dynamic query support还是很糟,但如果你懂得你想要的东西,现存的架构
已足够让你做所有你想要的东西了。山外有山,天外有天,挡得住你的困难并不一定挡
得住别人。

至于 C++ Templates,因为Runtime Compile有许多困难,比起C#,我觉得C#是更实用的
FP选择。

--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 68.]

[上篇] [下篇] [同主题上篇] [同主题下篇]
[转寄] [转贴] [回信给作者] [修改文章] [删除文章] [同主题阅读] [从此处展开] [返回版面] [快速返回] [收藏] [举报]
 
回复文章
标题:
内 容:

未名交友
将您的链接放在这儿

友情链接


 

Site Map - Contact Us - Terms and Conditions - Privacy Policy

版权所有,未名空间(mitbbs.com),since 1996