F#简明教程一:F#与函数式编程概述

简介:
F#是微软.NET开发平台的一门编程语言,其最大的特点是对函数式编程(FP,Functional Programming)的引入;F#对面向对象(OOP)编程的支持也很出色,使用F#语言,开发人员可以自由选择函数式编程或面向对象编程来实现他们的项目。此外,F#还可以与.NET平台上C#、VB等其他编程语言紧密结合。
 
CPU多核心化和云计算的背景下,函数式编程可以很好的解决多并发运算的问题(在处理并发问题方面,面向对象编程存在一定程度的固有缺陷,比如类和实例化过程中产生的一些副作用,详细请参考51CTO.com对另一门函数式编程语言Erlang的视频访谈《 因并发而生 因云计算而热:Erlang专家访谈实录 》)。微软看到了这个趋势,试图通过专门为函数式编程打造的F#语言提升.NET平台在并发处理、多核多并发方面的能力,进一步提升开发人员的生产力和代码运行效率。
 
在2009年的TechED上,51CTO.com就F#和函数式编程的问题视频采访了微软MVP赵颉老师,我们可以采访视频了解F#和函数式编程最近的发展,详细请参考《 TechED 09视频专访:F#与函数式编程语言 》。
 
F#小背景:看似年轻的F#已经有近10年的历史。最初由微软研究院的Don Syme于2002年立项研发;F#在2005年推出第一个版本,2007年底,微软宣布F#进入产品化阶段。在不断的改进中,F#从C#、Linq和Haskell中吸收了很多优点。
 
F#编程起步
 
F#可以运行在.NET Framework 2.0版本以上的平台。如果你的Visual Studio之前没有安装F#,可以从微软F# Developer Center获得(http://msdn.microsoft.com/en-us/fsharp/default.aspx)。
 
不能免俗,让我们来看看F#的Hello World代码:
 
 
  1. #light  
  2. System.Console.WriteLine(“This is one hello”)  
  3. printfn “This is another hello” 
将代码保存为hello.fs文件后,我们需要在命令行中通过fsc.exe编译生成一个.NET程序集。在命令行中的编译代码如下:
 
 
  1. fsc hello.fs 
通过上面的代码,我们就得到了常见的可执行文件(.exe文件),这就是我们F#的起步——hello.exe。
 
F#小提示:F#是.NET平台上的一个编译型语言,但仍然可以像脚本语言一样运行。可以使用Visual Studio或fsi.exe(在F#安装目录下的bin目录)进行F#脚本的执行。
 
代码解读
 
让我们来仔细看看hello.fs文件里的代码
 
◆程序首先以“#light”开始,在以后的F#之路上,我们会经常看到“#light”;大多数时候,“#light”总是出现在F#程序的开始位置,这是F#轻量级语法的标识;在最新的F#版本中,#light将作为默认选项。
◆“System.Console.WriteLine”调用一个.NET基础类(熟悉C#或VB.NET的朋友会相当熟悉)用来初始化一些必要的功能。
◆“printfn”是F#的一个常用函数,他会将双引号中的参数输出到控制台上显示。
 
跟其他程序的Hello World一样,这段F#代码简单易懂,看着跟其他语言写就的Hello World还有些相似;但作为函数式编程语言,F#的语法和编程中的思路却有很大的不同。在下周的章节中,我们将深入F#编程,讲解F#的语法要点。









本文转自 red7 51CTO博客,原文链接:http://blog.51cto.com/hong7/260083,如需转载请自行联系原作者
目录
相关文章
|
前端开发 Python
ElementUI上传组件el-upload自定义http-request上传到Flask服务
ElementUI上传组件el-upload自定义http-request上传到Flask服务
879 0
ElementUI上传组件el-upload自定义http-request上传到Flask服务
|
移动开发 安全 JavaScript
uniapp跨域解决
uniapp跨域解决
|
存储 算法 定位技术
PCL--点云配准--ICP使用
PCL--点云配准--ICP使用
PCL--点云配准--ICP使用
|
存储 数据采集 分布式计算
一篇文章搞懂数据仓库:四种常见数据模型(维度模型、范式模型等)
一篇文章搞懂数据仓库:四种常见数据模型(维度模型、范式模型等)
一篇文章搞懂数据仓库:四种常见数据模型(维度模型、范式模型等)
|
6月前
|
前端开发 API 开发者
harmonyOS基础- 快速弄懂HarmonyOS ArkTs基础组件、布局容器(前端视角篇)
本文由黑臂麒麟(6年前端经验)撰写,介绍ArkTS开发中的常用基础组件与布局组件。基础组件包括Text、Image、Button等,支持样式设置如字体颜色、大小和加粗等,并可通过Resource资源引用统一管理样式。布局组件涵盖Column、Row、List、Grid和Tabs等,支持灵活的主轴与交叉轴对齐方式、分割线设置及滚动事件监听。同时,Tabs组件可实现自定义样式与页签切换功能。内容结合代码示例,适合初学者快速上手ArkTS开发。参考华为开发者联盟官网基础课程。
441 75
harmonyOS基础- 快速弄懂HarmonyOS ArkTs基础组件、布局容器(前端视角篇)
|
3月前
|
虚拟化 iOS开发 MacOS
macOS 26 Blank OVF - macOS Tahoe 虚拟化解决方案
macOS 26 Blank OVF - macOS Tahoe 虚拟化解决方案
92 4
|
消息中间件 算法 Java
(十四)深入并发之线程、进程、纤程、协程、管程与死锁、活锁、锁饥饿详解
本文深入探讨了并发编程的关键概念和技术挑战。首先介绍了进程、线程、纤程、协程、管程等概念,强调了这些概念是如何随多核时代的到来而演变的,以满足高性能计算的需求。随后,文章详细解释了死锁、活锁与锁饥饿等问题,通过生动的例子帮助理解这些现象,并提供了预防和解决这些问题的方法。最后,通过一个具体的死锁示例代码展示了如何在实践中遇到并发问题,并提供了几种常用的工具和技术来诊断和解决这些问题。本文旨在为并发编程的实践者提供一个全面的理解框架,帮助他们在开发过程中更好地处理并发问题。
274 0
|
11月前
|
运维 监控 搜索推荐
阿里大鱼进行发短信业务---使用详细步骤-Java操作
这篇文章详细介绍了如何在Java中使用阿里大鱼服务来发送短信,包括开通短信服务、签名和模板管理,以及具体的Java开发步骤和代码示例。
870 0
阿里大鱼进行发短信业务---使用详细步骤-Java操作
|
弹性计算 Oracle Java
centos7 搭建java环境
本文详细介绍了在阿里云服务器ECS上(CentOS 7.7)通过两种方式搭建JDK环境的方法。方法一使用yum源安装,首先更新yum源并解决可能遇到的rpm数据库问题,然后卸载系统自带的OpenJDK及相关文件,接着安装JDK并配置环境变量。方法二是通过下载并解压tar包进行安装,同样需要配置环境变量。文章提供了具体命令和步骤,并附带了解决常见问题的方法。适合初学者参考学习。
441 9
centos7 搭建java环境
|
存储 缓存 安全