摘要: 在一次和Dustin Cambell一起吃中饭时,我们谈到了如何让Did it with .NET成名,然后我们自然而然的谈到了合成函数这个话题。我是管道运算符(|>)的超级粉丝,但是我却重未发现一个适合使用合成函数运算符(>>)的地方。Dustin 给了我一篇他最新写的博客,在读完之后,我意识到以前我的一些错误做法及想法。在F#中,合成函数是一项非常基础的技巧,而且你应该完全的掌握它。那么什么是合成函数呢?合成函数是一种根据一些小的函数来组成新的,更强大的函数的编程技术。让我们假设你的任务是这样的:计算一个确定路径下所有文件所占的硬盘大小,下面是一些常用的有用的代码:基本函 阅读全文
posted @ 2012-01-19 13:29 tryfsharp 阅读(465) 评论(0) 推荐(1) 编辑
摘要: 链表是函数式编程的骨干部分,因此,要成为一个真正的F# 程序员,你必须能掌控如何操控链表.幸运的是,F#中的链表既简单又直观,那么就让我们开始吧.玩转F#链表在区分F#链表与位于System.Collections.Generic命名空间下的.NET数组(Arrays)和范型List<T>时,我们需要注意下面一些东西:F# ListArraysGeneric ListModify ElementsNoYesYesAdd New ElementsNoNoYesElement LookupO(n) slowO(1) fastO(1) fast看完这个表格,或许你会有这样的疑惑:为什么还 阅读全文
posted @ 2012-01-16 16:50 tryfsharp 阅读(342) 评论(0) 推荐(0) 编辑
摘要: 我们的故事要从这个叫Stuart Bowers的家伙开始,下图中,他正拿着一个来自Café Press网站的杯子喝着咖啡,此杯子正是他对函数式编程做出出色贡献的象征。Stuart是Amalga(一个微软推出的医疗系统)项目的一个开发者,也是微软公司的一位全职员工。此人不写博客——此乃世界的一大损失也…不管怎样,他还是帮我审读过我写的书中的几个章节,并且最近我们还有一次促膝长谈,讨论并分享怎样才是一个地道的F#风格的话题。问题提问:在编写下面的代码时,怎样才是“正确的F#方式”:创建一个共享的,可变得值并且生成聊个线程池用来累加一个List(F#中的链表)中的元素。(故意创建一个竞争的 阅读全文
posted @ 2012-01-12 15:19 tryfsharp 阅读(290) 评论(0) 推荐(0) 编辑
摘要: Programming F#这本书已经发行了! 这意味着你可以,也应该去商店并买上一本.既然已经有Programming F# 这么出色的F#语言编程指导书了,那么对于语言特性而言,我更愿意写更多关于程序方面的东西. 这就是说,让我们看看,能用这么棒的F#语言做些什么.这是名为”F#真棒”系列博客中的第一篇.这些博客为我们展示了先进的,贴近实际的F# 应用程序能做的不可思议的事情.这篇博客是关于决策树和ID3算法的,这些问题最初在StackOverflow.com上讨论的很激烈。如果你想学习更多关于数据挖掘技术和机器智能学习知识,Tom Mitchell编写的Machine Learning 阅读全文
posted @ 2012-01-11 16:00 tryfsharp 阅读(341) 评论(0) 推荐(0) 编辑
摘要: 在我的前一篇文章中过了一遍ID3 算法后面的理论。现在我们在此基础上得到了那个痛苦的数学公式,让我们写一些代码吧!这里是一个用F#实现了的算法(同时在文章底部有附件下载)。open Systemtype Record = { Outlook : string Temperature : string Humidity : string Wind : string PlayTennis : bool } /// Given an attribute name return i... 阅读全文
posted @ 2012-01-11 14:07 tryfsharp 阅读(379) 评论(0) 推荐(0) 编辑
摘要: 也许以前你就听说过主动模式----通常与"了不起的"或者"惊人的"这些词联系在一起. 主动模式是F# 众多特有功能中的一个,并且,当你对这些功能有所体验时,你会觉得主动模式将会是最强大的功能中的一个.这篇文章将会从主动模式的单条件和多条件匹配到部分和参数化匹配来展示它的强大之处.你会通过这篇文章里的一个例子来了解为什么它会命名为主动模式.那么,让我们开始吧.首先,我们来认识一下主动模式. 主动模式是由被称为"Banana Clips" 的"(|" " |)"符号组成。主动模式 有多种不同的形式- 阅读全文
posted @ 2012-01-09 16:33 tryfsharp 阅读(286) 评论(0) 推荐(0) 编辑
摘要: F#与C#/java/C++的代码区域划分有很大的不同,它是靠行缩进来区别不同的代码作用域的。F#编译器编译文件的顺序是垂直从上到下,就如之前说的F#代码文件都是有上下顺序的,如图:这个项目下有两个文件,如果"Program.fs"想要引用"Helper.fs"里的代码,那么"Helper.fs"文件必须在"Program.fs"上面,不然会出现未定义错误。这里可以通过选中该文件,然后用"Alt+向上箭头"和"Alt+向下箭头"来上下调整文件顺序。[注意:多个文件时,如果要定 阅读全文
posted @ 2012-01-06 16:22 tryfsharp 阅读(680) 评论(0) 推荐(0) 编辑
摘要: Nessos Information Technologies最近提供了一篇位于SkillsMatter(一个技术网站)的关于M-Brace(一个基于F# 语言的云开发环境)的讲座,名为"M-Brace – F# 在云中的应用". George Stavroulakis 这样写道:我们想再一次的感谢你,因为你,才让我们与伦敦的F#团队联系在一起.SkillsMatter上的每个东西都如此出色,并且大伙都十分热忱的期待M-Brace和它的"单向访问云计算"。参考资料:你可以在这个讲座中找到:http://skillsmatter.com/podcast/n 阅读全文
posted @ 2012-01-06 15:18 tryfsharp 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 下面的内容是关于Silverlight4上的F#的!Dmitry有关于这个话题的所有详细资料:这周的早些时候,我们已经将F#运行时作为Visual Studio 2010的Microsoft Silverlight4 工具(此下载包含了在VS2010环境下开发Silverlight程序的所有文件)的一部分发布出来了,此运行时是为Silverlight4 准备的。点击下载Visual Studio 2010 的Microsoft Silverlight 4工具,包括F# 运行时。当使用F# 开发Silverlight程序时,建议用C#或者VB写程序的前台部分,充分利用Visual Studio 阅读全文
posted @ 2012-01-05 16:27 tryfsharp 阅读(310) 评论(0) 推荐(0) 编辑
摘要: let是F#里的最基础和最主要的一个关键字,let语句是变量赋值以及对变量进行函数定义的语句。let语句主要用来进行变量值得绑定,绑定的值是不能改变的,也就是跟常量一样,这样做可以避免很多程序员疏忽等人为BUG。当然可以通过添加mutable关键字来进行非常量绑定。如下:lethelloStr="HelloWorld"//不可变的值let mutablenum=10//定义一个可变的值 num<-15//给num值赋值关于变量和函数的作用域会在接下来介绍F#代码结构中讲到。另外由于F#是垂直编译的(即编译顺序从上到下),所以F#的代码文件是有上下顺序的,规则是同文件中 阅读全文
posted @ 2012-01-04 17:05 tryfsharp 阅读(575) 评论(0) 推荐(0) 编辑