为经验丰富的C#3.0开发人员学习F#有多难?

Mar*_*the 15 c# f# functional-programming c#-3.0

为有经验的C#3.0开发人员学习F#有多难,和/或你认为学习F#最困难的部分是什么?

Jam*_*ney 17

从F#开始(学习语法,抓住如何以功能方式编程的表面)并不太难.熟悉LINQ并且对Lambda表达式有深刻理解的优秀C#3开发人员应该能够快速掌握基础知识.

很难说他们打破面向对象解决问题的习惯是多么困难,但需要功能性解决方案的问题应该迫使他们实现这一飞跃.除非你在我看来遇到一个新问题,否则很难改变你的想法.

总而言之,我会说我花了一个星期的时间来学习业余时间(每晚2-3小时)语言的语法和基础知识.你需要更多的时间才能真正感受到函数式编程.

问题

我仍在努力与类型.我一直在做Project Euler问题来自学语法,所以到目前为止我还不需要任何复杂的用户定义类型.

编译器所做的类型推断也需要一点点习惯,因为当它需要指定类型时,并且它何时可以解决它们时并不总是很清楚.

学习

我肯定会建议为初学者尝试Project Euler问题.数学问题总是适合函数式编程.

更一般地说,数据处理问题也很好.函数式语言中的列表处理非常简单,是您应该学习IMO的第一件事.

图书

真实的函数式编程:我刚刚完成了本书,并发现如何将函数式编程原理应用于使用C#和F#的问题非常有用.本书中的大多数示例都是使用两种语言完成的,使用特定于每种语言的函数式编程习语并解释它们之间的区别.

资源


Bri*_*ian 14

对我来说,其中一个更难的部分是学习代数数据类型(有区别的联合和元组)和模式匹配,因为我真的没有在其他语言中深入地遇到过这些概念.

至于速度,这是我最喜欢的学习F#的在线内容.由于你是来自C#,你可能会发现' 这个C#代码在F#中看起来像什么 '很有用.