
F#.net
文章平均质量分 90
光宇广贞
有志于学,虽草庐中应可知天下事!
展开
-
F# 中 LOP 之“具体表述”
Language - Oriented Programming is a style of programming that tries to produce code that looks like it came from a Domain Specific Language but is still valid in a general purpose programming languag原创 2009-08-08 09:44:00 · 2346 阅读 · 1 评论 -
迭代器 Enumerator 和 yield
对于纯 OOP 开发来说,数据被单独包装是很重要的手段,很多场景下也是必要的手段。这就产生了集合类和用来操作集合类的迭代器。原创 2010-10-09 18:57:00 · 2023 阅读 · 0 评论 -
通过 Fibbonacci 理解 CPS;通过 CPS 理解 Fibbonacci
见《函数式编程的魅力:CPS》文中图一、图二代码。通过 Fibbonacci 理解 CPS: CPS 的基本形式是这样的,对于 FuncCps ( elem cont ) 方法,在 FuncCps 内部实现 cont ( f ( elem ) ),更确切地说,是在 FuncCps 内部实现 SomeFunc ( cont ( f ( elem ) ) ),原创 2009-10-16 22:32:00 · 1405 阅读 · 1 评论 -
咖喱函数(Curry Func)
文 / 李博(光宇广贞)Wikipedia, the Imperialistic encyclopedia In mathematics and computer science, curring, invented by Moses Schönfinkel and later re-invented by Haskell Curry, is the technique o原创 2009-09-20 22:13:00 · 3639 阅读 · 2 评论 -
Lambda 演算
文 / 李博(光宇广贞) 惭愧!头一次认识 Lambda 表达式还是因为 C# 3.0。几年后接触到了函数式语言方知 Lambda 表达式的渊源。Lambda 表达式是“Lambda-Calculus”,即 “Λ-演算”的关键概念。由 Λ-演算发展出的理论,成为计算机科学与技术诞生和发展的基础。Λ-演算之概念、定义、公理、命题定义一:Λ-项集建立在一个无限变量集 V原创 2009-09-22 20:02:00 · 3923 阅读 · 0 评论 -
F# 静态解析变量类型
文 / 李博(光宇广贞) 《方法多态与Duck typing、C#之拙劣与F#之优雅》文末留了个尾巴,F# 的 inline 与 ^ 算符如何联袂完成方法多类的类型检查的。本文讨论这一问题。 《F# 手册》§5.1.2 提到:A type of the form ^ident is a statically resolved variable type. A原创 2009-09-18 08:23:00 · 1754 阅读 · 0 评论 -
FP 指点 C++ 的歧义算符
文 / 李博(光宇广贞) 在 C++ 中有很多带有歧义的算符,比如《C++ 0x 之左值与右值》中提到的“&”,再比如常用的“=”等。 这个“&”就很神通广大,不仅可以“取址”,还可以“取左值引用”;用在位运算中,表示“并且”。C++ 标准委员会当初在制定算符时,让 & 兼备“取址”和“取引用”的功能,是否考虑的是二者在含义上有相近之处?嗯……编译器在操作的时候的确原创 2009-09-17 18:54:00 · 2066 阅读 · 1 评论 -
方法多态与Duck typing;C#之拙劣与F#之优雅
文 / 李博(光宇广贞)方法多态与类型多态 了解 OOP 的同学对类型多态都很熟悉了。话说,类型多态之多态便体现在方法上,那方法多态又是嘛玩儿?类型多态之类型指的是对像的类型,其方法是受对像约束的。方法多态便是不受对像类型约束的多态。具体区别在: 方法多态无需继承;类型多态必须实现接口或类继承。 方法多态不管你是谁,只在乎你能干嘛;类型多态讲究你出自何门何派。原创 2009-09-16 18:52:00 · 4959 阅读 · 8 评论 -
函数式编程魅力:Continuation-Passing Style,说为何 C#、C++ 引入 Lambda 意义重大及 C++ 和 C# 的缺憾
文 / 李博(光宇广贞) CPS,Continuation-Passing Style,后继传递格式。 顾名思义,该格式就是向后接力传递一个东西,传什么呢?引述维基百科对 CPS 的定义如下: In functional programming, continuation-passing style is a style of programmi原创 2009-09-13 17:03:00 · 9531 阅读 · 4 评论 -
C++ 0x 之 Lambda:贤妻与娇娃,你娶谁当老婆?听 FP 如何点化 C++
文 / 李博(光宇广贞) 先以《N1958》提案的开场白,做为本文的开场白吧:A number of languages provide a way of passing code as arguments without having to define a separate named function. For example, Algol 68 has downwa原创 2009-09-08 19:39:00 · 4891 阅读 · 3 评论 -
从 C++ 模板元编程生产质数看 F# 函数式编程思想
文 / 李博(光宇广贞) 话说 1994 年,C++ 标准委员会在圣迭哥举行的一次会议期间,Erwin Unruh 同学展示了一段可以产生质数的代码。这段代码的特别之处在于质数产生于编译期而非运行期,在编译器产生的一系列错误信息中间夹杂着从 2 到某个设定值之间 的所有质数。其改进版据说在 GCC 3.2 上得到验证。 源代码这里就不贴出来了,网上或者任一本《模板元原创 2009-08-10 19:59:00 · 4201 阅读 · 4 评论 -
由 C++ 模板元编程看 F# 对链表的处理,兼谈 C 系语言和 FP 的优劣
有如下一段 C++ 模板元编程代码,求类型链表中最长类型的长度。// 求列表中字节最长的类型的字节长度值// 使用链表传递的思想:1::2::3::4::[]#include using namespace std;// 尾结点struct NullType;// 链表结点template struct TypeList;// 定义四结点链表原创 2009-08-09 19:13:00 · 2559 阅读 · 0 评论 -
F# 中的 LOP 之“抽像表述”
Language - Oriented Programming is a style of programming that tries to produce code that looks like it came from a Domain Specific Language but is still valid in a general purpose programming languag原创 2009-08-07 14:11:00 · 2210 阅读 · 2 评论 -
F# 中的 LOP ——“面向语言编程”
又一次谈到 F#。话说,听说过“面向对像”,那“面向语言”是什么玩儿?只听说过“面向对像的语言”,难道说还有“面向语言的语言”? 我个人觉得“面向某某”与其非要形像化成某种语言,不如将之抽象成一种不受语言约束的思想。语言可以对“面向某某”的思想进行支持和实践,而不要受其桎梏。像 C#.net 这种,“专为面向对像而设计的语言”最终是失败的,残酷的现实已经逼得 C# 不得不原创 2009-08-06 23:22:00 · 6019 阅读 · 11 评论 -
CLI 语言一览表
http://en.wikipedia.org/wiki/List_of_CLI_languages CLI 语言是指用于创建符合“公共语言体系(Common Language Infrastructure)”的库和程序的计算机语言。除了一些明显的例外,绝大多数 CLI 语言全部编译成为“公共中间语言(CIL,Common Intermediate Language)”;而 CIL原创 2009-08-08 14:45:00 · 3568 阅读 · 2 评论