博文

早上半个多小时学习F#(2012-01-15 09:50:00)

摘要:简单搜集了这方面的资料 保存下来 希望对大家有用......

阅读全文(1714) | 评论:0

F#介绍及与VB.NET等语言的区别与联系(英文)(2012-01-15 09:44:00)

摘要:http://www.developerfusion.com/article/122079/intro-to-f-programming/ Intro to F# Programming 13 Jul 2011 | by Ted Neward and Jessica Kerr | Filed inComments (0) PDF .NET F# VB.NET C# Visual Studio 8Tweet Microsoft took something of a risk with the Visual Studio 2010 release, adding the first brand-new “out of the box” language to the .NET ecosystem since its introduction of C# back in 2001. I speak, of course, of VisualF#, an object/functional hybrid language based on work done by Microsoft Research. Providing both leading-edge functional programming and familiar object-oriented capabilities, F# gives the developer more power to solve problems -- all in fewer lines of code, thanks to succinct syntax. For developers who have never looked at F# before (a vast majority of the .NET developer population), this article takes a quick glance at the F# syntax. I want to give the F# neophyte enough familiarity with the language to und......

阅读全文(3286) | 评论:0

F#编译器和核心库开放源代码(2012-01-15 09:43:00)

摘要:F# compiler and core library now open source By Chris Alexander, published on 05 Nov 2010 | Filed inComments (0) PDF .NET F# C# LINQ Visual Studio Tweet Early this morning Microsoft made available a package of compiler and library source code for F#. F# is a functional programming language that runs on the .NET framework. While it is not as mature as C# or VB, the languages more often used to build for .NET, it has progressed quickly and is extremely popular in development environments where functional paradigms have been traditional, for example banking and finance. The release has been made available through the F# Power Pack, an open-source CodePlex project that previously solely hosted a set of additional libraries for F#. These additional libraries provide features such as LINQ library support; an HTML documentation generator; lexer and parser helpers; and other features for migrating between F# versions. The addi......

阅读全文(3198) | 评论:1

F# 程式設計入門 (2)(2012-01-15 09:41:00)

摘要:作者:蔡學鏞 由於 F# 是相當新的技術,目前的學習資源不多。如果你想好好學習 F#,就必須閱讀 APress 出版的《Expert F#》,這是一本好書。我的許多解說範例取自這本書。 第一個範例程式 讓我們先來看一個例子。 #light // 分析字串內重複出現的字 let wordCount text = let words = String.split [' '] text let wordSet = Set.of_list words let nWords = words.Length let nDups = words.Length - wordSet.Count (nWords,nDups) let showWordCount text = let nWords,nDups = wordCount text printfn "--> %d words in the text" nWords printfn "--> %d duplicate words" nDups 利用 F# 的互動環境(fsi.exe),輸入上面的程式,會得到下面的結果: val wordCount : string -> int * int val showWordCount : string -> unit 每個值都有型別 意思是,定義了兩個值(val),分別是 wordCount 與 showWordCount,它們的型別分別是「string -> int * int」與「string -> unit」。「string -> int * int」意思是:需要一個字串(string)當參數,傳出值是兩個 int 所組成的值組(tuple)。「string -> int * int」意思是:需要一個字串(string)當參數,沒有傳出值。unit 型別相當於許多編程語言的 void。 利 用 let 定義 wordCount 時,在等號前面有出現「text」,這就是字串參數;而 wordCount 定義的最後,有出現「(nWords,nDups)」,這就是傳出值,它是兩個......

阅读全文(2711) | 评论:0

F# 程式設計入門 (1)(2012-01-15 09:40:00)

摘要:作者:蔡學鏞 大家對函數編程(Functional Programming,FP)相當陌生,少有人能正確地敘述出函數編程是什麼,有什麼好處。函數編程長期以來沒有出現在主流的商業軟體世界,欠缺主流語言的支援。 一直以來,真正讓 FP 無法被接受的原因可能是「執行效率」。傳統上,函數式編程語言的效率確實比命令式(imperative)編程語言來得差,這在商業系統上是不能忍受的。命令式語言讓我們用貼近馮紐曼架構(van Neumann Architecture)機器的方式寫程式,比較低階,所以效率會比較高。 但是這個原因卻有了變化。過去這十多年,我們先是對「跨平台」和「反微軟」的重視超越「執行效率」,而後又開始重視「簡單」、「快速開發」。想要「簡單」、「快速開發」,就要用比較高階的抽象,因此函數式編程比命令式編程更適合現在的開發環境。 這些年來硬體的進步,讓我們對於函數編程的效率不再是大問題;甚至由於編譯技術的進步,函數式編程語言的執行速度,現在也已經不再是吳下阿蒙。妙的是,還 不只這樣,局勢似乎 180 度反轉成為對 FP 有利的局面:多 CPU、多核心、超執行緒(HT)的硬體架構普及,以及分散式運算的流行,這根本就是專為滋養 FP 繁殖而打造的環境。 1930 年代,Alonzo Church 開發出一套 formal system,名為 lambda calculus。這個系統本質上是一個編程語言,為一部「想像中的機器」所設計的語言。lambda calculus 的函數可以接受函數當作輸入(引數)和輸出(傳出值)。這樣的函數用希臘字母 λ 當作識別,所以這個語言才名為 lambda calculus。 Alan Turing 也在做類似的研究,開發出不同的系統,就是大名鼎鼎的 Turing machine,他得到的結論和 Alonzo Church 類似。後來證實 Turing machine 和 lambda calculus 的威力一樣強大。 1958 年,對 lambda calculus 相當感興趣的 MIT 教授 John McCarthy 設計出 Lisp 語言,Lisp 實踐了 lambda calculus,讓 lambda calculus 可以在 von Neumann 電腦上執行!大家開始注意到 Lisp 的威力。1973 年,......

阅读全文(2668) | 评论:1

F# 静态解析变量类型(2012-01-15 09:36:00)

摘要:http://blog.csdn.net/hikaliv/article/details/4565015 

文 / 李博(光宇广贞)        《方法多态与Duck typing、C#之拙劣与F#之优雅》文末留了个尾巴,F# 的 inline 与 ^ 算符如何联袂完成方法多类的类型检查的。本文讨论这一问题。        《F# 手册》§5.1.2 提到: A type of the form ^ident is a statically resolved variable type. A fresh type inference variable is created and added to the type inference environment (see §14.6). This type variable is tagged with an attribute indicating it may not be generalized except at inline definitions (see §14.7), and likewise any type variable with which it is equated via a type inference equation may similarly not be generalized.        问题解决了。那范型 'a 与 ^a 的区别呢?差就差在 ^a 需要 inline,见如下示例: > let id (a : 'a) = a;; 
val id : 'a -> 'a 
> id 1, id "hi";; 
val it : int * string = (1, "hi") // Good, it's generi......

阅读全文(2400) | 评论:1

微软F#语言参考手册2010年4月版(英文)(2012-01-15 09:35:00)

摘要:http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/spec.html 由于原文太大,无法上传请根据链接学习参考 ......

阅读全文(2155) | 评论:0

微软最新语言-visual2010 F#语言(2012-01-15 09:26:00)

摘要:F#是由微软发展的为微软.NET语言提供运行环境的程序设计语言。它是基于Ocaml的,而Ocaml是基于ML函数程序设计语言的。
  这是一个用于显示.NET在不同编程语言间互通的程序设计。
[编辑本段]历史
  F#自2002年开始研发,2005年发布了第一个版本,2007年底正式从研发专案转移至产品部门,并决定将F#置入Visual Studio.NET 2010。截止目前(2009年1月6日),最新的F#预览版为F# September 2008 CTP,版本号为1.9.6.2。
[编辑本段]定位
  微软计划将慢慢整合F#至.NET平台并使F#最终成为.NET平台的顶峰语言。
  众所周知,F#是一种函数型程序设计(FP,Functional Programming)语言。然而F#对IP(Imperative Programming)与OOP(Object Oriented Programming)的支持几乎一样的出色。
  F#也许终将成为程序核心部分设计的首选,而C#与VB等将在用户界面交互设计方面继续发挥其强大的潜力。
[编辑本段]展望
  以目前来看,随著FP在程序设计中的重要性日渐凸显,F#身为微软唯一的FP语言,其位置特殊,容易引起关注。
  对一部分人来说,这语言所带来的一些特性以及其对FP的特性的全面支持(而且做得都比较好,至少目前是这样),可能会带来一次大的革变。
[编辑本段]掌握
  目前学习F#的资料并不丰富,而且其文档淩乱琐碎。比较优秀的书籍是(目前似乎是唯一)2005年8月由Apress出版的《Expert F#》,由Syme, Don/ Granicz, Adam/ Cisternino, Antonio合著。
  可以通过查阅MSDN得到一些零散的入门类文档。
[编辑本段]代码示例
  F# Hello Word 程序
  (* This is commented *)
  (* Sample h......

阅读全文(2339) | 评论:0

F# 中 LOP 之“具体表述”(2012-01-15 09:24:00)

摘要: http://blog.csdn.net/hikaliv/article/details/4424813 F# 中的 LOP 使用简单代码描述复杂问题的优势体现在如下三个方面: 抽象表述—— F# 使你在代码中描述特定领域概念时,不需要引入新的抽象层。 具体表述—— F# 使你可使用其它语言描述问题,然后在 F# 中读取。 计算表述—— F# 使你使用其它语言编码处理本地概念时,不需要借用第三者更专业化的语言。        具体表述,Concrete Representation。        具体表述,是指使用其它语言来具体描述问题,而后将之读取到 F# 程序中。使用你所熟知的 DSL 和 F#,便可以顺利地表达问题。        fslex 和 fsyacc        处理某种语言的具体表述的最简单的方法就是创建一个剖析器(parser)和编译器。在这方面,Lex 和 Yacc 做为代码生成剖析器的标准工具已有三十年光景。FsLex 和 FsYacc 就是 Lex 和 Yacc 用以生成 F# 代码剖析器的实现。如果读者对于该工具感兴趣,可以参考这篇文章。        Lex 和 Yacc 就是 DSL,用以描述编译器中的剖析器和文法器(lexer),或某些将源码分解成一系列的记号(token)并将这些记号流转换成一棵抽象句法树(AST,Abstract Syntax Tree)的工具。例如如下 Lex 代码用以将字串“10 * 8 + 5.0”转换成符号 [INT32(10); ASTER; INT32(8); PLUS; FLOAT(5.0)]        相应着的 Yacc 剖析器由语法产物来匹配符号,并建立 AST 节点。        若不理解 Lex 和 Yacc 也不用......

阅读全文(2544) | 评论:0

F# 中的 LOP 之“抽像表述”(2012-01-15 09:22:00)

摘要:  F# 中的 LOP 使用简单代码描述复杂问题的优势体现在如下三个方面: 抽象表述—— F# 使你在代码中描述特定领域概念时,不需要引入新的抽象层。 具体表述—— F# 使你可使用其它语言描述问题,然后在 F# 中读取。 计算表述—— F# 使你使用其它语言编码处理本地概念时,不需要借用第三者更专业化的语言。        抽像表述,Abstract Representation。        使用现代面向对像语言的程序员面临着的难题是如何表述概念。C# 只便于描述“对像”及其行为,但却难于精确表达抽象思想。比如你可以很容易地构造出包含 Meow() 和 Purr() 方法的 Cat 类,但你如何在 C# 中描述“快乐”这个概念呢?        这里将通过“抽像表述”来聊一聊 F# 是如何自然而然地表述概念的。        类型缩写,Type Abbreviations        F# 可以创建 alias 来描述类型,在编译期会被替换成核心类型,也即类型缩写只存在于代码中。使用类型缩写在描述特定领域问题的概念时不需要引入或创建自定义类型。比如将 int 类型化名为 CustomerID,则使用 CustomerID 时含义清楚,而非仅引用 int 型时,还要猜这个整型值代表着什么。        类型缩写有助于处理更复杂的泛型类型。比如 Dictionary<string, string> 型,使用中可能会难于判断这两个 string 类型到底意味着什么而不好处理。使用类型缩写可以清楚表义:        识别联合体,Discriminated Unions        让我们来继续瘪一瘪 C#。比如用......

阅读全文(2150) | 评论:0