Questions tagged «f#»

F#是.NET的简洁,表达性强,高效的功能和面向对象的语言,可帮助您编写简单的代码来解决复杂的问题。

13
时间函数在函数编程中如何存在?
我不得不承认我对函数式编程并不了解。我从这里到那里都读到它,因此知道在函数式编程中,无论调用多少次,函数对于相同的输入都会返回相同的输出。就像数学函数一样,该函数针对函数表达式中涉及的输入参数的相同值求出相同的输出。 例如,考虑一下: f(x,y) = x*x + y; // It is a mathematical function 无论您使用多少次f(10,4),它的价值始终是104。这样,无论您在何处编写f(10,4),都可以将其替换为104,而无需更改整个表达式的值。此属性称为表达式的引用透明性。 由于维基说(链接) 相反,在功能代码中,函数的输出值仅取决于输入到该函数的参数,因此,用参数x的相同值两次调用函数f会两次产生相同的结果f(x)。 函数编程中是否可以存在时间函数(返回当前时间)? 如果是,那么它怎么存在?它不违反功能编程的原理吗?它特别违反了引用透明性,而引用透明性是函数式编程的特性之一(如果我正确理解的话)。 否则,如何知道函数式编程的当前时间?

15
可以进行功能GUI编程吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 我最近抓到了FP错误(试图学习Haskell),到目前为止我所看到的内容(一流的函数,惰性评估以及所有其他优点)给我留下了深刻的印象。我还不是专家,但是我已经开始发现“功能上”的推理比基本算法的必要性更容易(而且我很难回头去找)。 但是,当前FP似乎保持不变的一个领域是GUI编程。Haskell方法似乎只是包装命令式GUI工具包(例如GTK +或wxWidgets),并使用“ do”块来模拟命令式样式。我没有使用过F#,但是我的理解是,将OOP与.NET类一起使用时,它可以执行类似的操作。显然,这是有充分的理由的-当前的GUI编程都是关于IO和副作用的,因此在大多数当前的框架中不可能进行纯功能编程。 我的问题是,是否可以使用功能性方法进行GUI编程?我很难想象这在实践中会是什么样子。是否有人知道尝试这种方法的任何框架(实验框架或其他框架)(甚至是为功能性语言从头开始设计的任何框架)?还是仅使用混合方法的解决方案,对于GUI部件使用OOP,对于逻辑使用FP?(我只是出于好奇而问-我很想认为FP是“未来”,但是GUI编程似乎需要填补很大的空白。)

9
在哪些方面使用F#比使用C#更合适?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 6年前关闭。 改善这个问题 在过去的几年中,F#已经发展成为Microsoft完全支持的语言之一,它采用了在OCaml,ML和Haskell中孕育的许多想法。 在过去的几年中,C#通过引入越来越多的功能语言功能来扩展其通用功能:LINQ(列表理解),Lambda,闭包,匿名代表等等。 鉴于C#对这些功能特性的采用以及F#作为一种不纯净的功能语言的分类法(它允许您访问框架库或在需要调用某个函数时更改共享状态),尽管这两种语言都有其相似之处,但它们之间还是有很强的相似性与自己相反的主要重点。 我对您的生产多语言程序中采用这两种语言的任何成功模型以及您过去一年左右用F#编写的生产软件(Web应用程序,客户端应用程序,服务器应用程序)中的领域感兴趣,用C#编写。
210 c#  f# 

3
F#入门[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 改善这个问题 我该如何开始F#编程? 有什么好的入门示例可以学习该语言,或者了解其相对于其他语言的某些优势? 我需要哪些工具(例如Windows,Visual Studio等)?
139 f# 

5
Haskell和F#之间的主要区别是什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 6年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我已经在Internet上搜索了F#和Haskell之间的比较,但是还没有找到真正确定的东西。主要区别是什么?为什么我要选择一个?

1
为什么这个F#代码这么慢?
C#和F#中的Levenshtein实现。对于大约1500个字符的两个字符串,C#版本的速度提高了10倍。C#:69毫秒,F#867毫秒。为什么?据我所知,他们做的完全相同吗?不管是Release版本还是Debug版本。 编辑:如果有人来这里专门寻找“编辑距离”实现,那么它就坏了。工作代码在这里。 C#: private static int min3(int a, int b, int c) { return Math.Min(Math.Min(a, b), c); } public static int EditDistance(string m, string n) { var d1 = new int[n.Length]; for (int x = 0; x < d1.Length; x++) d1[x] = x; var d0 = new int[n.Length]; for(int i …
127 c#  performance  f#  inline 

5
F#更改为OCaml [关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 4年前关闭。 改善这个问题 F#源自OCaml,但是缺少或添加了哪些主要项目?具体来说,我对于可用于学习OCaml的资源是否也对想学习F#的人有用感到好奇。
126 f#  ocaml  functor 

4
折叠和缩小之间的区别?
尝试学习F#,但在区分折叠和缩小时感到困惑。折叠似乎做同样的事情,但是需要一个额外的参数。是否存在这两个功能存在的正当理由,或者它们存在以容纳不同背景的人?(例如:字符串和C#中的字符串) 这是从样本复制的代码片段: let sumAList list = List.reduce (fun acc elem -> acc + elem) list let sumAFoldingList list = List.fold (fun acc elem -> acc + elem) 0 list printfn "Are these two the same? %A " (sumAList [2; 4; 10] = sumAFoldingList [2; 4; 10])


4
设计同时用于F#和C#的F#库的最佳方法
我正在尝试在F#中设计一个库。该库应该易于在F#和C#中使用。 这就是我卡住的地方。我可以使它对F#友好,也可以使它对C#友好,但是问题是如何使两者友好。 这是一个例子。想象一下我在F#中具有以下功能: let compose (f: 'T -> 'TResult) (a : 'TResult -> unit) = f >> a 从F#完全可以使用: let useComposeInFsharp() = let composite = compose (fun item -> item.ToString) (fun item -> printfn "%A" item) composite "foo" composite "bar" 在C#中,该compose函数具有以下签名: FSharpFunc<T, Unit> compose<T, TResult>(FSharpFunc<T, TResult> f, FSharpFunc<TResult, Unit> a); …
113 c#  f# 

7
F#开发和单元测试?
我刚开始使用F#,这是我的第一门功能语言。我一直在与C#进行半排他性的合作,并且非常喜欢F#如何使我重新思考如何编写代码。我发现一个令人迷惑的方面是编写代码过程中的变化。我已经在C#中使用TDD多年了,非常感谢进行单元测试以了解我的位置。 到目前为止,我使用F#的过程是编写一些函数,并在交互式控制台中使用它们,直到我“合理”地确定它们可以工作,然后进行调整和组合。这对于诸如Euler Project之类的小规模问题非常有效,但我无法想象以这种方式构建大型项目。 人们如何进行单元测试并为F#程序构建测试套件?是否有与TDD相当的产品?任何指针或想法表示赞赏。

1
Linux下的MbUnit,用于F#项目中?
我尝试在gallio-users列表上询问此问题,但问题未出现(Google网上论坛称发布成功)。我想这个列表可能由不经常阅读他的电子邮件的人主持:-)鉴于SO具有Gallio和MbUnit的标签,我认为值得在这里提出。 我看到MbUnit头版提到他们热衷于保持Mono兼容性。还有一篇关于Gallio用户的已有 1年以上历史的文章,说它在Linux下不起作用 如果删除Parallelizable属性,我要测试的项目在Mono下可以正常编译。我可以Gallio在Linux下启动控制面板,但不能启动Icarus或Echo。 有什么方法MbUnit可以在Linux下运行测试吗?使用命令行(例如Gallio.Echo)并且不需要Monodevelop的东西特别有用。
104 ubuntu  f#  mono  mbunit  gallio 

6
为什么默认情况下Ocaml / F#中的函数不递归?
为什么默认情况下F#和Ocaml(以及其他语言)中的函数不是递归的? 换句话说,为什么语言设计人员认为最好让您键入如下rec声明是一个好主意: let rec foo ... = ... 并默认不提供函数递归功能?为什么需要显式rec构造?
104 f#  recursion  ocaml 

6
如何在现实世界中使用函数式编程?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 改善这个问题 函数式语言之所以不错,是因为它们可以通过消除状态来避免错误,而且还可以为您轻松地自动并行化它们,而不必担心线程数。 但是,作为Win32开发人员,我可以对应用程序的某些dll使用Haskell吗?如果我愿意,有没有真正的优势会自动带给我?如果是这样,那么给我带来这个好处的是编译器? F#是否会并行化您跨多个内核编写的函数,并自动为您自动执行cpu?您会看到任务管理器中的线程数增加吗? 基本上,我的问题是,我如何才能以一种实用的方式开始使用Haskell,如果这样做我会真的看到一些好处吗?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.