Tag: f#

为什么这个程序的F#版本比Haskell版本快6倍?

Haskell版本(1.03s): module Main where import qualified Data.Text as T import qualified Data.Text.IO as TIO import Control.Monad import Control.Applicative ((<$>)) import Data.Vector.Unboxed (Vector,(!)) import qualified Data.Vector.Unboxed as V solve :: Vector Int -> Int solve ar = V.foldl' go 0 ar' where ar' = V.zip ar (V.postscanr' max 0 ar) go sr (p,m) = sr + […]

从C#调用F#代码

我正在玩F#和C#,并想从C#调用F#代码。 我设法通过在Visual Studio中有两个项目在相同的解决scheme中,并将C#代码的引用添加到F#项目中,以相反的方式工作。 做完这些之后,我可以调用C#代码,甚至在debugging的时候通过它。 我想要做的是F#代码从C#而不是C#代码从F#。 我在F#项目中添加了一个对C#项目的引用,但是它不像以前那样工作。 我想知道这是否可能,而不需要手动。

函数式编程中的“免费”风格有哪些优缺点?

我知道在某些语言(Haskell?)中,努力的目标是实现无点式的风格,或者永远不要通过名称明确地引用函数参数。 这是一个非常难以理解的概念,但是这可能会帮助我理解这种风格的优点(或者甚至是缺点)。 谁能解释一下?

在F#中使用机器学习的资源

我已经学习了使用Matlab作为原型工具的机器学习课程。 自从我沉迷于F#之后,我想继续在F#中学习机器学习。 我可能希望将F#用于原型和生产,所以机器学习框架将是一个很好的开始。 否则,我可以从一个库的集合开始: 高度优化的线性代数库 统计包 可视化库(允许绘制和与图表,图表交互) 并行计算工具箱(类似于Matlab的并行计算工具箱) 最重要的资源(对我来说)是书籍 ,博客文章和关于机器学习的在线课程(F#/ OCaml / Haskell …)。 任何人都可以提出这些资源? 谢谢。 编辑: 这是一个基于以下答案的总结: 机器学习框架: Infer.NET :用于支持良好F#的graphics模型中用于贝叶斯推理的.NET框架。 WekaSharper :围绕stream行的数据挖掘框架Weka的F#封装。 Microsoft Sho :.NET平台上用于数据分析(包括matrix运算,优化和可视化)的持续环境开发。 相关图书馆: Math.NET数字 :内部使用英特尔MKL和AMD ACML的matrix操作和支持统计function。 Microsoft Solver Foundation :一个线性编程和优化任务的好框架。 FSharpChart :F#中一个很好的数据可视化库。 阅读清单: 数值计算 :从F#中的机器学习入手非常棒,并且介绍了在F#中使用这些math函数库的各种工具和技巧/技巧。 F#和数据挖掘博客 :也是“数值计算”一书作者尹竺强烈推荐的。 F#作为机器学习的Octave / Matlab替代品 :Gustavo刚刚开始使用F#作为开发工具的一系列博客文章。 很高兴看到许多图书馆被连接在一起。 “机器学习在行动”的F#示例 :Mathias已经将一些Python样本翻译成F#。 它们在Github中可用。 Hal Daume的主页 :Hal在OCaml写了一些机器学习库。 如果您怀疑函数式编程不适合机器学习,那么您会感到宽慰。 任何其他的指针或build议也是受欢迎的。

你如何devise一个function程序?

从我的编程生涯第一天起,我开始使用面向对象编程。 然而,我有兴趣去学习其他的范例(我曾经在这里说过的东西有好几次是好事,但我没有时间去做)。 我想我不仅准备好了,而且还有时间,所以我将用F#开始函数式编程。 但是,我不确定如何构build更less的devise应用程序。 我习惯于OO编程中的每个文件和类名词/函数动词的一个概念。 你如何devise和构buildfunction性应用程序?

F#开源项目

我正在寻找一些开源的F#项目来学习。 不是片段,而是完整的项目,是F#特性的好代表(即模式匹配,歧视联盟等)。 我的目标主要是看所有的function如何组合在一起,项目是如何组织的,以及如何从functionangular度处理问题。

C#默认关键字的F#中的等效内容是什么?

我正在寻找相当于C#的default关键字,例如: public T GetNext() { T temp = default(T); … 谢谢

F#在同一个项目的另一个文件中定义/使用一个types/模块

这将有希望是一个容易的。 我有一个F#项目(最新的F#CTP)与两个文件(Program.fs,Stack.fs)。 在Stack.fs中我有一个简单的命名空间和types定义 Stack.fs namespace Col type Stack= … 现在我尝试通过声明来在Program.fs中包含名称空间 open Col 这不起作用,并给我错误“名称空间或模块Col未定义”。 然而它在同一个项目中被定义。 我必须失去一些明显的东西

F#vs OCaml:堆栈溢出

最近我发现了一个关于Python程序员的F#的演示,在看完之后,决定自己实现一个解决“ant难题”的解决scheme。 有一只可以在平面网格上走动的ant。 ant可以一次向左,向右,向上或向下移动一个空间。 也就是说,从细胞(x,y),ant可以进入细胞(x + 1,y),(x-1,y),(x,y + 1)和(x,y-1)。 ant无法进入x和y坐标的数字之和大于25的点。 例如,点(59,79)是不可访问的,因为5 + 9 + 7 + 9 = 30,它大于25.问题是:如果ant在(1000,1000)开始时访问多less个点,包括(1000,1000)本身? 我首先在30行OCaml中实现了我的解决scheme,并试用了它: $ ocamlopt -unsafe -rectypes -inline 1000 -o puzzle ant.ml $ time ./puzzle Points: 148848 real 0m0.143s user 0m0.127s sys 0m0.013s 整洁,我的结果和leonardo在D和C ++中的实现一样 。 与leonardo的C ++实现相比,OCaml版本的运行速度比C ++慢大约2倍。 这是可以的,因为莱昂纳多使用队列来消除recursion。 然后我把代码翻译成F# …这是我得到的: Thanassis@HOME /g/Tmp/ant.fsharp $ /g/Program\ Files/FSharp-2.0.0.0/bin/fsc.exe ant.fs Microsoft […]

何时使用F#中的序列而不是列表?

我知道一个列表实际上包含值,而一个序列是IEnumerable<T>的别名。 在实际的F#开发中,我应该何时使用序列而不是列表? 下面是我能看到一个序列会更好的原因: 与需要IEnumerable<T>其他.NET语言或库进行交互时。 需要表示一个无限的序列(在实践中可能不是很有用)。 需要懒惰的评价。 还有别的吗?