浅谈函数式编程语言 F#

开发 开发工具
F#是由微软发展的为微软.NET语言提供运行环境的程序设计语言。它是基于Ocaml的,而Ocaml是基于ML函数程序设计语言的。这是一个用于显示.NET在不同编程语言间互通的程序设计。本文简单介绍这个函数式编程语言,一起来看。

 F#是一个基于.NET框架的多模式编程语言、是一种.NET平台上的函数式编程语言、更是一个高效的.NET程序语言.就像C#和VB.NET,F#可以利用.NET的核心类库,如WPF,WCF,VSTO等等,通过F#您甚至可以使用XNA编写XBox游戏.仅仅如此并不意味着您应该去学习它.那为何要使用F#呢?

作为一种函数式编程语言,F#使得某些领域的编程要比命令式编程(如使用C#)更为容易.并行编程(Parallel Programming)和面向语言编程(Language-Oriented Programming)是其中的两个领域.

F#语言交互式设计窗口

如果您曾经编写过.NET应用程序,并感觉自己在努力使用手头的语言表达自己的想法,也许F#就是您在寻找的.F#主要是由Microsoft Research 和 Visual Studio 小组协作开发的,并采纳了F#社区和一些主要使用者的意见.F#为Visual Studio 2010带来了很大的改观.

因为替代了局部程序中的元组使工作变的简单了.在异步编程和强类型对于浮点编码方面也提供的不错的解决方式.可以说F# 是Visual Studio 2010中结合了众多优点的编程语言.

F#的优势

在F#中函数可以被视为值,可以传递给其他函数,你可以方便地编写高阶函数;

F#支持组合式编程,你可以通过使用简单的操作符语法来组合函数;

F#提供了支持函数式编程风格的类型,如针对简单数据集合的元组和针对结构化符号数据的discriminated unions;

F#提供了许多不可变的数据结构,如不可变的列表、映射、集合、序列和记录等;F#支持异步编程,并且提供了使这种编程比以往更容易的结构;

Visual F#中还包括了一个F#解释器,F#互动器(fsi.exe),它能够以交互方式编译并执行代码;F#支持延迟计算,这可以使您直到需要结果时才进行计算;

F#支持面向对象语言特征,除了让您使用F#语言开发.NET框架API外,这种特征可以使F#程序能够充分地访问.NET框架.

当然除此以外,F#还支持如面向对象语言特征,支持命令式编程结构,支持数学计算等特性.在VS2010中F#除了特征广泛外,它的特点还包括比如说简单简洁的句法、并行和异步的编程.

F#简单简洁的句法:

F#像C#一样,是一种强制型的语言.但是我也可以使用类似在Python中那样的方式.既轻量级的,灵活的,数学类的编程方式.

  1. let data = (1,2,3)  
  2. let rotations (x, y, z) =  
  3. [ (x, y, z);  
  4. (z, x, y);  
  5. (y, z, x) ]  
  6. let derivative f x =  
  7. let p1 = f (x - 0.05)  
  8. let p2 = f (x + 0.05)  
  9. (p2 - p1) / 0.1  
  10. let f x = 2.0*x*x - 6.0*x + 3.0  
  11. let df = derivative f  
  12. System.Console.WriteLine("The derivative of f at x=4 is {0}", df 4.0) 

 

其运行结果为:“The derivative of f at x=4 is 10”.

在并行和异步编程上,.NET Framework 4 和Visual Studio 2010中,包含了一个关于并行程序开发的庞大文档和工具库.F#提供了一种强健的编程模式和灵活优秀的功能,使这些显现的更为直观.最为重要的是,我们可以在过去习惯了的线性编程模式下进行异步编程.

  1. let http url =  
  2. async { let req = WebRequest.Create(Uri url)  
  3. let! resp = req.AsyncGetResponse()  
  4. let stream = resp.GetResponseStream()  
  5. let reader = new StreamReader(stream)  
  6. let! contents = reader.AsyncReadToEnd()  
  7. return contents }  
  8. let sites = ["h ttp://bing.com""h ttp://microsoft.com";"h ttp://msdn.com""ht tp://msnbc.com"]  
  9. let htmlOfSites =  
  10. Async.Parallel [for site in sites -> http(site)]  
  11. |> Async.RunSynchronously 

 

以上就是Visual Studio 2010中F#语言简单介绍,在使用过程中肯定会有更多的体验.

随著FP在程序设计中的重要性日渐凸显,F#身为微软***的FP语言,其位置特殊,容易引起关注。对一部分人来说,这语言所带来的一些特性以及其对FP的特性的全面支持(而且做得都比较好,至少目前是这样),可能会带来一次大的革变。

【编辑推荐】

  1. 详解F#异步及并行模式中的轻量级代理
  2. 最容易令初学者混乱的F#命令
  3. F#中关于代理的基本使用
  4. 详解F# 2.0中两大运行时的简单应用
  5. 用好F#操作符解决溢出异常 实现高效算术操作
责任编辑:于铁 来源: 华军资讯
相关推荐

2009-11-09 17:51:51

F#函数式编程

2010-01-07 10:04:18

F#函数式编程

2009-08-18 18:01:20

F#函数式语言

2009-06-22 13:43:01

F#函数式编程

2010-07-07 13:11:20

ScalaF#C#

2010-07-09 14:12:00

ScalaF#C#

2012-11-06 10:01:35

ContinuatioF#

2010-05-13 09:21:44

F#Visual Stud

2010-01-26 08:25:06

F#语法F#教程

2015-03-15 01:55:25

编程语言排行榜

2010-01-15 08:33:13

F#F#类型推断F#教程

2010-04-07 16:51:59

F#

2019-07-11 08:00:00

JavaScriptJulia编程语言

2021-08-23 15:05:21

PyretJavaScript编程

2018-05-23 08:41:14

编程语言Azure Searc数字化

2009-08-13 17:39:48

F#数据类型Discriminat

2009-08-19 09:42:34

F#并行排序算法

2021-07-14 13:12:51

2009-09-10 14:18:59

Functional F#

2010-03-26 19:22:08

F#代理
点赞
收藏

51CTO技术栈公众号