我试图决定在企业软件开发中如何使用F#和C#。 math代码的F#是一个不费吹灰之力。 我喜欢使用F#进行GUI工作,尽pipe它缺lessGUIdevise器支持,但是,当然,C#GUI人员在工业中有更多的资源可用性。 但是,我不太熟悉C#+ XAML GUI开发,因此我担心引入偏见。 在一个客户端的情况下,他们有几十个相当静态的GUI(每年更换)和一些其他非常dynamic的GUI(例如业务规则引擎)。 他们已经拥有F#代码,并已经投入了F#培训,所以技能可用性不是问题。 我的印象是,C#+ XAML可以让你轻松地构build静态GUI(几个滑块,一些文本框等),但是我看不到GUIdevise器如何帮助像编程规则引擎这样的程序化GUI。 我是否认为保持大部分静态GUI(例如,向100个独立的GUI添加新的字段)将需要手动操作? 另外,我认为GUIdevise器在大量程序化的GUI环境中几乎没有用处,所以像业务规则引擎这样的东西,主要是用C#+ XAML编写的,很less使用GUIdevise器。
我听过很多关于函数式编程语言的知识,而且我也很愿意学习。 我想这将主要是为了好玩,但是,我希望这会提高我的编程技能。 我主要是C#/ .net背景,所以我的第一select是学习F#(因为.NET和熟悉Visual Studio)。 另一方面,我想知道F#是否具有像Lispmacros或Haskell高阶函数的function。 你能比较F#,Haskell和Lisp吗? 哪一个将是你select的语言?
在观看Don Symes的pdcvideo后,我不太明白types提供者http://player.microsoftpdc.com/Session/04092962-4ed1-42c6-be07-203d42115274 我是否正确理解这一点。 你可以为Twitter,Excel等现成的types提供商… 如果我有一个自定义的Xml结构,我需要为此实现自己的types提供程序,这与创build自己的自定义映射程序有何不同?
几年前,我通过dynamic编程解决了一个问题: https://www.thanassis.space/fillupDVD.html 该解决scheme是用Python编码的。 作为扩展我的视野的一部分,我最近开始学习OCaml / F#。 有什么更好的方法来testing水域,而不是通过直接移植我在Python中编写的命令代码到F#,然后从那里开始,逐步向function性编程解决scheme迈进。 这第一个直接港口的结果是令人不安的: 在Python下: bash$ time python fitToSize.py …. real 0m1.482s user 0m1.413s sys 0m0.067s 在FSharp下: bash$ time mono ./fitToSize.exe …. real 0m2.235s user 0m2.427s sys 0m0.063s (如果你注意到上面的“单声道”:我也在Windows下testing,与Visual Studio – 相同的速度)。 我很困惑,至less可以说。 Python比F#更快地运行代码? 使用.NET运行库的已编译二进制文件比Python的解释代码运行SLOWER?!?! 我知道VM的启动成本(在这种情况下是单声道),以及JIT如何改进像Python这样的语言的东西,但仍然…我期望加速,而不是放缓! 我可能做错了吗? 我已经在这里上传了代码: https://www.thanassis.space/fsharp.slower.than.python.tar.gz 请注意,F#代码或多或less是对Python代码的直接逐行转换。 PS当然还有其他的收益,例如F#提供的静态types安全性,但是如果F#下的命令式algorithm的结果速度更糟……我很失望,至less可以说。 编辑 :直接访问,在评论中的要求: Python代码: https : //gist.github.com/950697 FSharp代码: https : //gist.github.com/950699
F#有一个度量单位的能力 (在这篇研究论文中有更多的细节)。 [<Measure>] type unit-name [ = measure ] 这允许单位被定义如: type [<Measure>] USD type [<Measure>] EUR 和代码写成: let dollars = 25.0<USD> let euros = 25.0<EUR> // Results in an error as the units differ if dollars > euros then printfn "Greater!" 它也处理转换(我猜测这意味着测量有一些定义的函数,让度量值相乘,分割和指数): // Mass, grams. [<Measure>] type g // Mass, kilograms. [<Measure>] type kg let […]
什么是“ 奇怪的循环模板模式 ”的一些实际用途? 通常显示的“ 计数class ”例子对我来说不是一个令人信服的例子。
我试图将Haskell核心库的箭头翻译成F#(我认为这对于更好地理解箭头和F#是一个很好的练习,我可能可以在我正在进行的项目中使用它们)。但是,直接翻译由于范式的不同,是不可能的。 Haskell使用types类来expression这些东西,但是我不确定F#构造的最好用F#的习惯用法映射types类的function。 我有一些想法,但最好把它提出来,看看什么被认为是最接近的function。 对于人群:如何将types类(一个Haskell成语)翻译成F#惯用代码? 对于那些接受我长久解释的人来说: Haskell标准库中的代码就是我试图翻译的一个例子: class Category cat where id :: cat aa comp :: cat ab -> cat bc -> cat ac class Category a => Arrow a where arr :: (b -> c) -> abc first :: abc -> a (b,d) (c,d) instance Category (->) where id f = f instance Arrow […]
在函数式编程(FP)环境中使用面向对象编程(OOP)有什么优势? 我已经使用F#一段时间了,我注意到我的函数越是没有状态,我就越需要将它们作为对象的方法。 特别是,依靠types推断使它们在尽可能多的情况下可用是有利的。 这并不排除需要一些与OOP正交的forms的命名空间。 也不鼓励使用数据结构。 实际上,FP语言的实际使用在很大程度上依赖于数据结构。 如果你看看F Sharp Programming / Advanced Data Structures中实现的F#栈,你会发现它不是面向对象的。 在我看来,面向对象与处理对象状态的方法主要是为了改变对象有很大关系。 在一个纯粹的FP环境中,这是不需要也不需要的。 一个实际的原因可能是能够与OOP代码交互,就像F#与.NET一样 。 除此之外,有没有什么原因? Haskell世界的经验是什么?编程更纯粹的FP? 我会很感激任何关于这个问题的论文或反事实的例子。
我正在寻找一些很好的参考资料来学习如何在游戏中模拟2D物理。 我不是在找一个图书馆来为我做 – 我想思考和学习,不要盲目地使用别人的作品。 我做了一些Googlesearch,当我在GameDev等上find一些教程时,我发现他们的教程很难理解,因为它们要么写得不好,要么假设一定程度的math理解,还没有。 具体来说,我正在寻找如何build模一个自上而下的二维游戏,有点像坦克战斗游戏 – 我想准确地build模(除其他外)加速度和速度,“组件”的热积累,模型和水平边界,以及导弹式武器。 网站,推荐的书籍,博客,代码示例 – 如果能帮助理解的话,都是值得欢迎的。 我正在考虑使用C#和F#来构build我的游戏,所以使用这两种语言中的代码示例都很好,但是不要让语言停止发布一个好的链接。 =) 编辑 :我不是说我不懂math – 我不知道我需要知道什么,以了解所涉及的系统,并不真正知道如何find资源会以一种可以理解的方式教给我。
对于那些已经学过F#的人 – 你推荐什么作为学习语言的书籍,网站等最好的资源。我当前的背景是在C#和asp.net。 – 非常感谢。