最新评论

共3页: 1 2 3 下一页 
TonyKent 2010-01-25 08:11
能讲一下第6个: 以递归代替循环的例子代码是什么意思吗?
yaqb 2009-06-06 15:07
为什么F#中没有BigNum.to_string这样的形式,那如果要转换怎么办
如:let s = BigNum.to_string n in Symbol (s, sizeOf opt s)会报错,说to_string 没有定义
Fyo 2009-01-07 11:12
教程非常好,请继续出,会有更多人关注,谢谢你的伟大付出!
roy_hu 2008-10-30 10:41
你想怎样“给函数类型扩展一些功能”?你说的是Haskell中的type class?
Nothing_One 2008-10-28 10:39
我怀疑你的表达能力...
gej 2008-10-01 21:26
其实,在我看来,F#蛮复杂的(自然o'caml也是),副作用的存在大大增加了语言的复杂度,新人很容易知道怎么做,但不知道为什么。为什么函数式语言要有模式匹配,这个很容易在OOP语言中实现,貌似累赘的特性?为什么函数式语言不需要for,while? 这些答案是不容易在F#这个不纯的语言里知道的。事实上这些选择既不是加速编码的语法糖也不是个人的审美口味。模式匹配用于解构代数类型(algebraic data type),而这个是做到引用透明(reference transparency)的充分条件(引用透明才能没有副作用); for while是典型的副作用产生器(i=i+1),既然输入固定输出总是一样,重复10次又有什么意义呢?对函数式语言感兴趣的,一可以学下LISP(语法简单但让你反思计算范式),二可以学下haskell(语法简洁让你再反思一下计算范式)
lvxuwen 2008-09-18 22:18
@同行友人
要过两天才能发,谢谢支持.
同行友人 2008-09-18 22:12

狂顶!!!

每次看过你的文章都会吸收很多,AND 又会期待你的下一篇赶快发

表现来,呵呵,期待ING ……

再顶!!
lvxuwen 2008-09-15 09:50
@Allen Lee
呵呵,最近在借鉴Haskell社区的一些资料来思考F#,可惜遇到了一个困难,希望找到解决方法,例如,想给函数类型扩展一些功能,我还没有找到办法
lvxuwen 2008-09-15 09:34
@welshem
互相学习
Allen Lee 2008-09-14 23:21
期待高级特性系列!
welshem 2008-09-14 21:11
学习中。
lvxuwen 2008-09-08 10:37
@巫云
可以的,对于asp.net webform来说,只需要在web.config文件里CodeDom添加了一下配置,页面文件后缀改为.fs就可以了。对于asp.net mvc也类似
pythonic 2008-09-08 10:32
@猜猜我是谁
行家一出手,便知有没有。。。
巫云 2008-09-08 09:53
可以做网站吗?
lvxuwen 2008-09-08 08:43
@猜猜我是谁
呵呵,真知灼见呀,所有的事物都是相对而言的,函数式编程在我讲到的三个方面确实有比目前OO语言有过人之处,因为这是我的切实体会,至于更深的,可能就是思考问题方式的不同了
猜猜我是谁 2008-09-08 00:40
@lvxuwen
这都不是函数语言的特性,而是具有一定的表现形式的某些函数式语言的广告词,在合适的领域里这些广告词是真的,仅此而已。

比如,

1:测试不是万能的,而且没有测试也不是万万不能的,如迪斯特拉所说,测试最多证明一件事情不正确,却不能证明一件事情正确。而实际上很多需要大量智力工作的代码和设计,往往很难通过证明“上次不正确、这次也不正确”,最终导致正确的结果。

2. 虽然数学是一种比较高级的抽象,但并非说象数学的编程语言在任何领域都能更好的抽象。实际上导致OO萌芽的语言如Simula等,最开始就是因为其它语言(包括FP类的)在需要模拟现实对象和离散事件系统的领域中表现很糟糕,才逐渐发展起来的。

3. 控制力的问题,并非函数式语言,而是某一种语言的设定所造成的。JS更容易DSL吗? Lisp对DSL又有何关键性的支持?实际上F#的控制力也不是仅仅来自于“函数式语言”这一词汇所代表的本质概念的,而是多种组合造成的。

最后声明,我可不反对FP,而且我反对现存和流行的OO形式。 不过即使想证明咱们喜欢的东西强大,也需要谨防张冠李戴~
lvxuwen 2008-09-07 21:20
@坏人

函数式语言更少的副作用,这意味着更少的测试,更容易测试
函数式语言有更高的抽象能力,这意味着不需要你苦心钻研OO设计模式,一头雾水
函数式语言让你有更强的控制力,你很容易地用你喜欢的方式来写代码,你很方便的就可以定义你自己的语言(DSL)
lvxuwen 2008-09-07 21:15
@fftt

let rec qsort =function
|[]->[]
|h::t->
let left,right=t|>List.partition (fun x->x<h)
qsort left @ [h] @ qsort right

printfn "%A" (qsort [8;2;9;88])
真见 2008-09-07 20:40
@Justin
我前2天就看到有人用F#写了个小小小的游戏。。。
fftt 2008-09-07 19:38
http://www.javaeye.com/topic/106747

这是python的,用两行解决qsort,写成F#该怎么写。以及几行就解决八皇后问题,请lz同学给翻译成F#,对F#有兴趣,但是不熟悉。
坏人 2008-09-07 19:07
函数编程的好处是什么呢?
lvxuwen 2008-09-07 17:37
@Justin
有几个开源的项目,我觉得比较有用的就是webtools,服务器和客户端都使用F#语言本身来做(服务端生成javascript),技术上不是什么新鲜的,但是一个很好的学习项目。
http://www.codeplex.com/fswebtools
Justin 2008-09-07 17:30
F#现在有没有成型的项目
lvxuwen 2008-09-07 16:15
@Anders Cui

呵呵,昨天又增加了一个小版本1.9.6.2,看来F#小组动作还是很大的,除了不在考虑兼容1.x外,所有之前废弃的函数库都删除了,没有兼容的负担,相信到了正式版,F#会给我们一个清晰、一致的语言和函数库。
lvxuwen 2008-09-07 16:09
自己鼓励一下,呵呵
lvxuwen 2008-09-07 16:06
@簡簡單單..
谢谢关注,随着学习的深入,希望之后的文章对你更加有用
lvxuwen 2008-09-07 16:04
@逖靖寒
呵呵,谢谢。好久的博客了,两本电子书,希望对你有用
Anders Cui 2008-09-06 20:04
@colder
呵呵,还么看CTP的东东,落后了...
lvxuwen 2008-09-06 17:00
@Anders Cui
@colder
是的,CTP版在语法做了简化、统一,除seq允许->外,其余的计算表达式都要使用标准的方法。
不过两位的写法,应该不是@fftt所要的结果吧。
colder 2008-09-06 13:48
@ Anders Cui

最新的CTP版本中不造成在除seq之外的地方使用->了
建议的是:
[for x in 1 .. 4 do for y in 1 .. 4 do yield x, y]
Anders Cui 2008-09-06 11:42
@lvxuwen
这样写更接近fftt的代码 :)
let tupleList =
[ for x in 1 .. 4
for y in 1 .. 4 -> x, y]
lvxuwen 2008-09-06 10:59
@fftt



我不懂具体的python语法



[for x in 1..4 do

for y in [1;4] do

yield x,y]



上面的语句是对应的c#3.0



for (var x = 1; x <=4; x++)

{

foreach (var y in new[] { 1, 4 })

{

yield return new { X = x, Y = y };

}

}



不过F#中的序列表达式中可以使用大多数控制结构。for,while,if 等等。理论上可以实现任何列表



let l=[for x in [1;4] do

for y in 1..4 do

yield y,x]

printfn "%A" l



结果为[(1,1),(2,1),(3,1),(4,1),(1,4),(2,4),(3,4),(4,4)]

逖靖寒 2008-09-06 10:54
Anders Cui 2008-09-06 10:51
@fftt
这个也是支持的,F#的列表推导特性
fftt 2008-09-06 10:02
呵呵
[for i in 1..10 do if i>4 && i<8 then yield i]
等于python中的
[x for x in range(1,10) if x>4 and x<8]

不过,F#支持这种吗?
[(x,y) for x in range(1,4) for y in [1,4]]
出来的结果是
[(1,1),(2,1),(3,1),(4,1),(1,4),(2,4),(3,5),(4,4)]
lvxuwen 2008-09-01 20:30
@张跃

指的是什么?
张跃 2008-09-01 19:50
@真见
CTP 好像是会加时间的
簡簡單單.. 2008-09-01 13:12
继续关注..
lvxuwen 2008-08-31 19:44
@同行友人

谢谢支持,呵呵。
同行友人 2008-08-31 19:42

狂顶

真高兴,又看到你的新作了,我是一个新入行的新手,呵呵,已经在你的"抛

砖引玉"之作和不断的作品中学到了很多,望楼主多写点类似的好文章!

AGAIN顶
lvxuwen 2008-08-31 16:10
@airwolf2026
编程范式不同而已,谈不上F#有什么特别的功能,c#做不到。而且你怎不能把c#也改造成函数式语言吧。
airwolf2026 2008-08-31 16:07
为啥不把F#的功能给集成在C#里面呢?
lvxuwen 2008-08-31 11:06
@fftt
F#也是强类型、静态的语言,只是一般情况下不需要你显式的声明类型,最主要的是它是函数式语言。动态性当然还无法与ironpython相比。不过函数式语言自身可以把函数作为参数和生成函数,也就是代码即数据,这一点上讲灵活性已经相当不错了。另外,它还可以使用动态扩展类型。总的说,它既有静态类型相对的类型安全,又有不错的灵活性。
fftt 2008-08-31 10:58
不知道这个F#的动态性如何,算静态语言还是像ironpython这样的多点。
lvxuwen 2008-08-31 10:37
@北京奥运
我看一下G#的介绍,类似于java中的aspectJ,是一种AOP代码生成器,这个应该不能称为完整的语言。谈不上谁替代谁。
非常感谢,呵呵,你不说我还不知道.net社区又增加了新的AOP实现,看来.net社区真的百花齐放呀,同步库、并行库...,.net社区完全可以和java社区抗衡了,希望园子里的朋友像javaeye一样,能够就不同的主题进行讨论,这样学习的也更深入些。
lvxuwen 2008-08-31 10:22
@redmoon

不太可能,这些程序集在F#项目的bin目录下,不像随意放的,如果是因为samples的原因,它可以直接放到自身程序的bin下呀
redmoon 2008-08-31 10:18
添加FSharp.PowerPack.Plot,FSharp.PowerPack.Plot.Excel,
FSharp.PowerPack.Plot.XCeed
这些程序集的原因,可能是Samples里面有excel调用的例子。就把一些基础函数封装起来了。
北京奥运 2008-08-31 10:10
马上会有一种 G# 的语言取代 F#
簡簡單單.. 2008-08-31 10:06
Mark
共3页: 1 2 3 下一页