说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

第一个F#入门程序Hello world

HTML文档下载 WORD文档下载 PDF文档下载
Visual Studio 2010 包含一种新的编程语言,它就是 F#。 F# 是一种多范例语言,它除了支持传统的面向对象的编程和 .NET 概念外,还支持函数编程。 本文介绍了它的一些功能和语法,演示如何声明简单变量,编写和测试函数,创建元组和列表,以及定义和使用类。

Visual Studio 2010 包含一种新的编程语言,它就是 F#。 F# 是一种多范例语言,它除了支持传统的面向对象的编程和 .NET 概念外,还支持函数编程。 下面的示例介绍了它的一些功能和语法。 该示例演示如何声明简单变量,编写和测试函数,创建元组和列表,以及定义和使用类。

 

创建新的控制台应用程序
在"文件"菜单上,指向"新建",再单击"项目"。
如果您在“模板类别”窗格中看不到 Visual F#,请单击“其他语言”,然后单击“Visual F#”。 中央的“模板”窗格将列出 F# 模板。
的顶部查找模板以确保 .net Framework 4显示在目标框架框中。
在模板列表中,单击“F# 应用程序”。
在“名称”中键入项目的名称。
单击“确定”。
新项目出现在“解决方案资源管理器”中。
使用 let 关键字声明和使用标识符
将以下代码复制并粘贴到“Program.fs”中。 您要将每个标识符(anInt、aString 和 anIntSquared)绑定到一个值。

创建新的控制台应用程序

 

1. 在"文件"菜单上,点"新建",再单击"项目"。

 

2. 如果您在“模板类别”窗格中看不到 Visual F#,请单击“其他语言”,然后单击“Visual F#”。 中央的“模板”窗格将列出 F# 模板。

 

3. 在顶部查找模板以确保 .net Framework 4显示在目标框架框中。

 

4. 在模板列表中,单击“F# 应用程序”。

 

5. 在“名称”中键入项目的名称。

 

6. 单击“确定”。

 

新项目出现在“解决方案资源管理器”中。

 

使用 let 关键字声明和使用标识符

 

将以下代码复制并粘贴到“Program.fs”中。 您要将每个标识符(anInt、aString 和 anIntSquared)绑定到一个值。

 

let anInt = 5let aString = "Hello world"// Perform a simple calculation and bind anIntSquared to the result.let anIntSquared = anInt * anInt
在 F# Interactive 窗口中查看结果
选择前面过程中的 let 表达式。
右击所选区域,然后单击“发送到 Interactive”。 另外,也可以按 Alt+Enter。
“F# Interactive”窗口将打开,并显示解释 let 表达式的结果,如下列代码行所示。 类型是从指定的值推断的。
val anInt : int = 5
val aString : string = "Hello world"
val anIntSquared : int = 25
在命令提示窗口中查看结果
1. 将下列代码行添加到“Program.fs”中。
System.Console.WriteLine(anInt)System.Console.WriteLine(aString)System.Console.WriteLine(anIntSquared)
2. 按 Ctrl+F5 运行代码。 将显示命令提示窗口,其中包含下列值。
5
Hello world
25
可以通过将鼠标指针停留在前面 WriteLine 语句中的标识符名称 anInt、aString 和 anIntSquared 上,验证推断的类型。
定义并运行函数
1. 使用 let 表达式定义一个求平方函数,如下面的代码所示。 该函数有一个形参 n,并返回发送到 n 的实参的平方。
let square n = n * n// Call the function to calculate the square of anInt, which has the value 5.let result = square anInt// Display the result.System.Console.WriteLine(result)
2. 按 Ctrl+F5 运行代码。 显示的结果为 25。
3. 递归函数需要 let rec 表达式。 下面的示例定义了计算参数 n 的阶乘的函数。

 

let rec factorial n =     if n = 0     then 1     else n * factorial (n - 1)System.Console.WriteLine(factorial anInt)
4. 按 Ctrl+F5 运行该函数。 显示的结果为 120,即 5 的阶乘。
创建集合:列表和元组
1. 聚合值的一种方法是使用元组,如下面的代码所示。

 

let turnChoices = ("right", "left")System.Console.WriteLine(turnChoices)// Output: (right, left)let intAndSquare = (anInt, square anInt)System.Console.WriteLine(intAndSquare)// Output: (5,25)

2. 聚合值的另一种方法是使用列表,如下面的代码所示。

 

// List of best friends.let bffs = [ "Susan"; "Kerry"; "Linda"; "Maria" ] 

通过使用“cons”运算符 (::),将新的好友添加到列表中。 请注意,该操作不更改 bffs 的值。 bffs 的值不可变,因此无法更改。

 

// Bind newBffs to a new list that has "Katie" as its first element.let newBffs = "Katie" :: bffs

使用 printfn 显示列表。 函数 printfn 显示结构化值中包含的各个元素。

 

printfn "%A" bffs// Output: ["Susan"; "Kerry"; "Linda"; "Maria"]printfn "%A" newBffs// Output: ["Katie"; "Susan"; "Kerry"; "Linda"; "Maria"]
3. 可以通过按 Ctrl+F5 或选择一段代码再按 Alt+Enter,查看结果。
创建和使用类
1. 下面的代码创建 Person 类,该类具有两个属性 Name 和 Age。 Name 为只读属性。 像函数编程中的大多数值一样,该属性的值不可变。 如果需要,可以在 F# 中创建可变值,但是您必须显式将其定义为可变。 在下面的类定义中,Age 的值存储在可变局部变量 internalAge 中。 可以更改 internalAge 的值。
// The declaration creates a constructor that takes two values, name and age.type Person(name:string, age:int) =    //  Person 对象的 age 值可变. 这使下面定义的 mutable变量internalAge也可变。    let mutable internalAge = age    // Declare a second constructor that takes only one argument, a name.    // This constructor calls the constructor that requires two arguments,    // sending 0 as the value for age.    new(name:string) = Person(name, 0)    // 只读属性    member this.Name = name    // 可读写属性.    member this.Age        with get() = internalAge        and set(value) = internalAge <- value    // 方法实例    // 增加person的age.    member this.HasABirthday () = internalAge <- internalAge + 1    // Check current age against some threshold.    member this.IsOfAge targetAge = internalAge >= targetAge    // Display the person's name and age.    override this.ToString () =         "Name:  " + name + "\n" + "Age:   " + (string)internalAge
2. 若要测试该类,请声明两个 Person 对象,进行一些更改,并显示结果,如下面的代码所示。
// The following let expressions are not part of the Person class. Make sure// they begin at the left margin.let person1 = Person("John", 43)let person2 = Person("Mary")// Send a new value for Mary's mutable property, Age.person2.Age <- 15// Add a year to John's age.person1.HasABirthday()// Display results.System.Console.WriteLine(person1.ToString())System.Console.WriteLine(person2.ToString())// Is Mary old enough to vote?System.Console.WriteLine(person2.IsOfAge(18))
将显示以下行。
Name: John
Age: 44
Name: Mary
Age: 15
False
查看 F# 教程中的其他示例
在"文件"菜单上,指向"新建",再单击"项目"。
如果您在“模板类别”窗格中看不到 Visual F#,请单击“其他语言”,然后单击“Visual F#”。 中央的“模板”窗格将列出 F# 模板。
在顶部查找 模板 以确保 .net Framework 4显示在目标框架 框中。
在模板列表中,单击“F# 教程”。
单击“确定”。
该教程将显示在“解决方案资源管理器”中。
本文来自微软网站。

 

UIDesigner 3.0架构设计总结 黑客怒了:政府花930万美金仅做一款App Email服务迎来“第二春” 未来将更加个性化 贯穿应用开发始终的八大陷阱 微评微软也推智能手表:是追求未来,还只是跟随? Firefox OS今年6月在5国首发 不含美国市场 8086/8088汇编指令手册 下一个被黑客攻击的对象—无线路由器 Windows Blue开始按钮或将回归,你怎么看? Evernote推孵化器 不占股权 基于C++和Lua的移动游戏引擎Leadwerks 3发布 苹果秘密测试iOS 7与iPhone 6 或将6月发布 酷6 CTO 陆坚:请先信任你的程序员 从电信联手i-Free,看运营商渠道的加速整合 “Animory”开发者分享HTML5游戏开发经验 Appflood SDK:连接中国与海外App流量交互平台 Apache Subversion 1.7.9正式发布! 微软IE浏览器5大动向 加速吸引开发者 开源的简繁转换库OpenCC支持Node.js 继Opera之后,Adobe表示将支持Google Blink 提高大型软件项目质量的一些实用型技术分享 谷歌推出Mirror API,开发者可为Google Glass开发应用 无需999,也不要499,99美元Linux超级计算机带回家 微软反击AWS:推出EC2并大幅降价,“价格战”正酣 Operation InVersion:拯救了LinkedIn的大修项目 五步走战略——Avocado在最初几周内迅速扩大30倍 NoSQL产品测评:Cassandra、MongoDB、Couchbase和Aerospike 谷歌眼镜开箱评测:比想象更精致 Pinterest谈实战经验:如何在两年内实现零到数百亿的月访问 初创公司Instart Logic:专为电子出版商和网站站长解决“痛点” 未来即卖芯片又卖服务!Intel收购软件厂商Mashery 用data控件连接DBf数据库时为什么出现“找不到可插入的ISAM”错误? 大家等会儿再吃饭!先看一看这里的送分大餐...... 他们怎么想的?居然没有bcb? 高手指教:如何在vc中控制刻录机和磁带机进行数据备份和恢复? 请问各位高手,怎样才能学好c语言。有没有什么好一点的网站和源码提供,多谢。 如何解决在向量位图背景下的窗口移动是的刷新置后问题?? 问一个问题!爱好or 程序员? 用VB如何设计好的报表,欢迎讨论! messagedlg能不能显示中文?例如显示“确定”,而不是“ok” 各位高手!!请教一个有关在oracle8i中建立表与表之间的关系? 请问哪里有无时间期限的Setup Factory 下载? 笨呆呆,拿分。 请问到那里可以下载uml工具,如果再有推荐的话是一定可以得分的 再次有请: playyuer 吴文智、袁飞、Jneu、Amoon、ttyp、icevi、progame、Jinesc 等各路高手 偶是初学者,问一个问题 SOS,很严重windows的问题,高手快进 复制Access数据库时出现的问题 如何动态添加TQuery的字段??? 编译一问 SOS,很严重windows的问题,高手快进 !!! 有人开发过基于winpcap的网络抓包程序么? SOS,很严重windows的问题,高手快进 ! 通过双网卡上网怎么设置? 一名初学者的问题? 各位老大,如何控制windows的资源管理器显示/不显示后缀名 问一下现在4000元可以买到大概什么配置的笔记本电脑 谁知道用VC++直接操作硬盘?告诉我一声,多谢了 请问考OCP的12本宝典在哪里下载?有人能介绍介绍经验吗?谢谢! Nobody can help me? 去考MCSD我合格吗? 怎样让程序自动修改IE中htm文件? !!!andyting!!!!过来拿分!!!!!! 请问各位大陆市场有没有<>? 请问学习vb有什么好书吗?请高手们帮帮忙,推荐几本好书?谢了!~ 谁知道生成随机数的算法 ListView问题 急急急急急急急急急急急急急急急急急急!!!! 如何向Access数据库中加入图片并从数据库中读出显示? 急,请问如何查询多个表(这些表有公共字段)查询结果按公共字段生成输出表单 请问关于利用JSP转换成HTML格式的问题 格了C:... 我装了Xteam linux kernel版本为:2.4.2,可是启动的时候屏幕上竟是0101010101010101,但用引导盘启动就可以的. 请高手们指点 "afx"是什么意思? 钩子函数里:GETMESSAGE????hook问题 大家帮帮忙!!我用vc中的Win32 console application调试c++程序时,输出的结果总是看不到,一出来就不见了啊!怎么办啊????急!!!!! 请教高手TDataSource的问题????????????????????????????????? TShockWaveFlash控件怎么样在播放时屏蔽其右键?另外怎么样让它在播放时单击鼠标让其播放结束?( Delphi版中没人回答 ,到这儿来试试) 谁有pb6.5的源代码,偶初学pb,想参考一下,最好是access或sql的,偶愿意送300分/个 LPWSTR-CString的相互转化? SQL语句问题,请指教。 求化学解答12 .13题 求解第十二题,这是化学题. 【生物/化学】食物的酸碱性肉、蔬菜、水果、熟米饭一般是酸性还是碱性 求化学12题c项解 术化学12题详细解答 柠檬水的在化学上的酸碱性柠檬汁和柠檬水有什么不同,柠檬汁和柠檬水在化学上和食品中各是什么酸碱性 老大们,柠檬水虽喝起来是酸的,但在食品中是显碱性的 化学第12,13题.如何写 第12题,快 食物的酸碱性如何区分,各分类如何? 溶解度计算题有t℃时220gA物质的溶液,先加入10g水,再溶解10gA,溶液可以达到饱和;再加入10克水,溶解5克A,又饱和.则有t℃时A的溶解度是多少? 2014福建省福州市高中语文数学化学物理生物地理各科的课本版本 从KNO3和NaCl混合物,提纯KNO3,可能的操作?1,加热蒸发2,冷却3,结晶4,过滤5,层析其中哪几个是要的! 关于溶解度的计算题现有某温度下的质量分数相同的两份KNO3溶液100g,甲同学把其中一份蒸发掉2.5g水后恢复到原温度,析出2g晶体;乙同学把另一份溶液蒸发掉5g水后,恢复到原温度,析出4.5g晶体, 现在的高中语文课本的名著阅读有哪些 如何有效的预习语文,英语,数学,政治,历史,物理,化学? 化学有关溶解度的计算题20度时,硫酸铜的溶解度为21g,现将m g无水硫酸铜粉末与m g水在20度时混合,充分搅拌,静置一段时间,析出晶体的质量与原加入粉末的质量之比为多少?解释的越清楚越好, 1.已知从滴定管放出的1滴溶液的体积约为0.05ml.(1)用0.10mol/L的盐酸滴定0.10mol/L的NaOH溶液,如在达到滴定终点后不慎又多滴加了1滴盐酸,继续加水至溶液体积为50ml后,所得溶液的c(H+)=( ),PH=( )(2) 高中化学溶液酸碱性练习常温下PH=12的溶液,水电离的OH-浓度是多少? 化学溶解度计算题1.某温度时,蒸干35可氯化氢溶液得到10克氯化钾,求该溶液中溶质得质量分数.2.配置 500毫升质量分数为百分之10的氢氧化钠溶液(密度为1.1可每立方厘米),需要氢氧化钠和水 化学溶液酸碱性NH5溶于水后发生水解,溶液呈————性.理由是什么 离子行化合物。 高中化学盐溶液酸碱性判断谁能告诉我基本判断酸碱性所 涉及的 阴阳离子和一些根所显的酸碱性(就是显:强酸 弱酸 强碱 弱碱 这样) 溶解度的计算题恒温下使某盐溶液蒸发掉ag水,有bg无结晶水晶体析出,再蒸发ag水,又有cg无结晶水晶体析出,则原溶液中溶质的质量分数为:A,100(a+c)/(2a+b+c)% B,(b+c)/(2a+b+c)% C,100c/(a+c)% D,无法确 有关化学2溶液酸碱性问题相同浓度的ph为9的醋酸钠和ph为4的醋酸等体积混合,\溶液为酸性还是碱性?求详解 , 【高中化学】酸碱性判断在由水电离产生H+浓度为1*10^-13次方mol/L 的溶液中,为什么既可以是强碱溶液,也可以是强酸溶液? 临海高中各科家教哪里比较有效果,比较好? 化学-盐溶液的酸碱性NaF溶液中离子浓度有大到小的排列顺序为?(标答是:Na+>F->OH->H+) 常温下,将0.1mol/L氢氧化钠溶液与0.06mol/L硫酸溶液等体积混合,该混合溶液的pH等于多少? 临海哪里有家教做?临海哪里可以做家教? 20℃时的氯化钠的溶解度是36g,它表示:( ).为什么?1、20℃时,氯化钠饱和溶液中溶剂和溶质的质量比为100:362、20℃时,100g氯化钠饱和溶液中含有36g氯化钠3、20℃时,氯化钠饱和溶液的质量是136g 水的电离和溶液的酸碱性 向纯水中加入酸或碱 水电离出的H+与OH-的量如何变化?酸碱里举一例说明即可. 临海哪里可以做家教? 20℃时,食盐的溶解度为36g,现有20℃时饱和食盐溶液100克和200克,在温度不变的情况下,各蒸发掉10克水,析出晶体分别是多少 硝酸钾中含有少量氯化钠的提纯方法 第12题选啥, 酸碱性化学题食醋是日常饮食中的一种调味剂,对改善食物的口感、增进食物消化等都有独特的功能.利用滴定分析法可以测定食醋总酸含量【食醋总酸含量是指100mol食醋中含酸(以醋酸计) 已知KNO3中混有少量的NaCl 提纯的步骤是加水溶解 蒸发浓缩 降温结晶 过滤 洗涤 干燥蒸发浓缩和降温结晶什么意思啊 谁教下 第12题为什么选D, 水的电离和溶液的酸碱性在纯水中存在以下平衡 2H2O=(可逆)H3O+ +OH- 若使水的电离平衡逆向移动 且H+浓度减小 通入氨气为什么不可以? 提纯混有NaCl的KNO3的方法具体操作是怎么样的? 食盐在20度是的溶解度是36g,计算20度时食盐饱和溶液中氯化钠的质量分数 湖北高二理科上学期物理,生物课本有哪些 高中化学,答案是C,求解析,感谢! 天津高二上学期理科学哪几本书?(语文,数学,物理,化学,英语都要啊)拜托大家能把具体的必修,选修说得清楚点么?谢谢啦!~~~~ 是福建省的 答案是c,不懂为什么,高中化学 化学第六题为什么选A? 我今年想到天津求学,不知道天津2013高考理科物理 英语都学了哪些选修?万急 都有什么重点呢? 已知t摄氏度时,某物质的不饱和溶液a克含溶质m克.若该溶液蒸发b克水并恢复到t摄氏度时,析出m①克,若原溶液蒸发c克水并恢复到t摄氏度时,则析出m②克溶质,用s表示物质在t摄氏度下的溶解度. 江西省南昌市 化学溶液的酸碱性计算向200mL纯水中加入1滴(0.05mL)0.2mol/氢氧化钡溶液,pH变为多少向200mL纯水中加入1滴(0.05mL)0.2mol/L氢氧化钡溶液,pH变为多少 中国自然经济瓦解的两种途径是什么?/中国自然经济的瓦解应该有多方面的因素导致中国自身以及外国资本主义输出的影响,列强希望将中国纳入世界资本主义市场我觉得都有些原因大家说 哪个比较难?主要考什么?要怎样准备?如果三选一想要获奖的话选哪个比较好?2008年的三科一等奖分别是多少分? 化学-溶液的酸碱性和pH在中性溶液中,为何“pH=7”、“c(OH-)=c(H+)=1*10^(-7)”不成立. 11.12.13求化学高手…高中化学题目,求正解…谢谢啦 第12题解析 酸碱性食物有哪些 化学题请解11,12,13,14 聊城初中数学,物理,化学一共几本书,哪几本? 食物的酸碱与化学上所指的溶液的酸碱性的不同请简要说明```谢谢
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn