首页
学习
活动
专区
圈层
工具
发布

F#语法糖
EN

Stack Overflow用户
提问于 2009-03-05 22:24:46
回答 7查看 1.2K关注 0票数 4

F#显然包含了许多语法糖,当我试图学习它时--没有书的帮助--我被各种各样的语法弄得不知所措。有没有一种更简单的“核心”语言隐藏在所有这些语法糖的背后?是否有语法糖的小抄列表,以及它们如何映射到核心语言?

还有,有没有什么原因F#要求函数定义使用不同于lambda的“赋值”运算符,或者这是一个随机的决定?例如"let inc x= x+1“vs "fun x -> x+1”

EN

回答 7

Stack Overflow用户

发布于 2009-03-05 22:34:07

大量的F#语法都来自于OCaml --许多OCaml程序无需修改就可以在F#中编译和运行。

良好的入门链接:

http://msdn.microsoft.com/en-us/fsharp/default.aspx

http://en.wikibooks.org/wiki/F_Sharp_Programming

http://lorgonblog.spaces.live.com/blog/cns!701679AD17B6D310!887.entry?_c=BlogPart

票数 6
EN

Stack Overflow用户

发布于 2009-03-14 15:01:10

除了Brian的链接之外,我还想把链接传递给我自己的博客系列Why I Love F#,它涵盖了一些基础知识。

关于你的第二个问题,"let inc x= x+1“和"fun x -> x+1”是表达函数的两种方式,但只有第一种方式使用赋值操作符。事实上,

代码语言:javascript
复制
let inc x = x + 1

等同于:

代码语言:javascript
复制
let inc = (fun x -> x + 1)

第一个是第二个的简写,但第二个可能说明F#中的所有函数实际上都是lambda绑定到名称的。

票数 4
EN

Stack Overflow用户

发布于 2009-03-06 16:37:54

除了.NET互操作之外,F#似乎比C#要简单得多。(并不是特别针对它,但因为它是另一种流行的.NET语言……)

以F#函数为例:

没有什么神奇的“expression”类型---

  • --
    • ,因此一切都是空的

所有函数都是第一类类型unary

  • Functions

在这里,你有一个函数系统,它比,比方说,C#,创建一个特例要容易得多,而且不可能对所有的函数都进行泛化。

至于你的具体问题,"let f x= x“与"let f= fun x -> x”相比,这可能是ML的遗传特征。(我看不出为什么它不能是"let f= fun = x",除了它可能会更令人困惑,而且可能会使语法更复杂?(就我个人而言,我更喜欢"let f=\x.x“。)无论如何,尽管在大多数情况下它们是等价的,但有时您必须定义一个语法函数,而不是函数值。

不幸的是,.NET互操作可能会使事情变得更复杂,尽管可能不会比其他.NET语言更多或更多。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/616934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档