成为一名更好的F#程序员的途径

成为一名更好的F#程序员的途径,f#,functional-programming,F#,Functional Programming,我想听听你们这些在F#(以及一般的函数式编程)方面已经达到高度熟练水平的人的意见,从现在起,我应该采取什么步骤来成为一名更好的/专业的F#程序员 我已经知道了很多f语法,并有几年C++的经验。作为一名工程师和数学家,我的目标是设计更好的科学库(线性代数包、偏微分求解器等) 与其他语言一样,现在您已经了解了语法和基础知识,是时候编写代码和更多代码了 确保你有足够的时间 在一个大项目上工作,这样你就可以熟悉大项目,而不仅仅是小项目 编写一些不可变的数据结构 在不使用继承的情况下处理大型项目 如果您

我想听听你们这些在F#(以及一般的函数式编程)方面已经达到高度熟练水平的人的意见,从现在起,我应该采取什么步骤来成为一名更好的/专业的F#程序员


<>我已经知道了很多f语法,并有几年C++的经验。作为一名工程师和数学家,我的目标是设计更好的科学库(线性代数包、偏微分求解器等)

与其他语言一样,现在您已经了解了语法和基础知识,是时候编写代码和更多代码了

  • 确保你有足够的时间
  • 在一个大项目上工作,这样你就可以熟悉大项目,而不仅仅是小项目
  • 编写一些不可变的数据结构
  • 在不使用继承的情况下处理大型项目
  • 如果您熟悉,请以纯功能性的方式实现其中一些,并注意其中一些是如何消失的
  • F#是关于混合函数和OOP风格的。一旦你完成了大量的抽象而没有继承,就把它带回来,开始混合各种风格。找到一个平衡点
既然你作为一名工程师和数学家的目标是设计更好的科学图书馆,我建议你将其作为一个学习视频游戏式模拟的练习。涉及物理和数学,但也需要控制状态的东西

从现在到现在,我该怎么做 成为一名更好的/专业的F# 程序员

每天继续编码:)

我在07年9月跳上了F#train,在此之前我有一船C#经验。我花了大约3个月的时间才停止用更有趣的语法编写C#代码,开始学习正确的编码风格:)

帮助我的提示和事情:

  • 我发现F#使编写非惯用代码变得非常困难,编写好的、干净的代码非常容易。如果你发现自己在与编译器抗争,10次中有9次你做错了什么。返回绘图板并重试

  • 不变性的整个概念一开始是个谜,但是从冈崎纯功能数据结构实现所有的数据结构是非常有帮助的

  • 在零八年到零九年间的几天工作中,我写了一封信。我已经有一段时间没看它了,但我确信它确实很糟糕——但是,向其他人解释这种语言的经历对于像我这样的人来说是一个很好的开端,他们通常不会有足够的动力在F#开始一个宠物项目:)

  • 地图、折叠和过滤器是您的朋友。尝试用这些函数表示算法,而不是用递归实现循环

  • 非尾部递归函数几乎总是更易于读写。看

  • 欧拉计划。很多人推荐它,我觉得它一点帮助都没有。不过,如果你是数学家的话,你可能会比我更有用


  • 你很可能不想听到我的消息,因为我对F#还没有达到很高的熟练程度,但我已经为自己设定了达到这一目标的目标(很像你自己)

    我想我可能会建议什么是我最大的学习工具:固执

    我给自己设定了一个大型的ish项目(一个游戏,正如gradbot所建议的)。然后,我决定使用尽可能多的不可变数据进行编码,而不考虑性能成本

    如果我找不到使用不可变数据的方法,我会来这里寻求帮助

    这种顽固的方法迫使我跳出的圈圈是一个非常好的学习练习,因为(正如朱丽叶提到的)如果你让自己放松,F#可以让你写出非常难看的C#

    现在,我有一个基于瓷砖的2D世界和一个小个子男人,他可以找到通往宝藏的路,然后使用*寻路器再次回家。。。我唯一改变的是它所显示的窗口的标题


    七月底,我才开始认真学习F#(之前我已经涉猎过了),在StackOverflow的帮助下,这个项目教会了我很多东西。

    我只能同意,尝试向他人解释函数式编程是学习函数式编程的好方法。我花了很多时间思考我的F#书的结构,我认为这真的帮助我理解了功能概念是如何相互关联的。即使是在你的公司里或是给你的朋友做一次关于F#的演讲,也会产生类似的效果

    当我开始学习F#时,我就开始做这个项目。我认为这非常有用,因为项目的许多组件非常适合函数式编程,所以我学习了许多函数技巧(因为它们是解决问题的最佳方法)。该项目处理了F#的源代码树并将其转换为JavaScript,因此我使用了大量递归函数和判别联合

    <>你所在的区域和我的不同,所以我不能给你任何具体的建议,但是如果你认为它是C++风格的,即使你认为它看起来更好,那也是一个好主意。当您编写它时,您可能会找到一些简化代码的方法

    因此,我认为我可以给出以下建议:

    • 试着向别人解释F#-这有助于你在头脑中组织想法
    • 选择好的问题开始-例如算法问题、处理树结构等
    • 写尽可能多的F#,不要害怕从一个对你来说并不完美的解决方案开始——我多次重写了我的第一个程序
    其他答案很好地建议了练习F#写作技能的方法,这显然非常重要。然而,在我看来,阅读F#code同样重要,这一点似乎并没有得到太多强调。有很多人在用F#做一些很酷的事情