Don Syme在他的SPLASH演讲中表示,F#并不打算成为C#的替代品,尽管它具有一般功能.他继续说F#在使用方面没有任何意义,但没有扩展到论文.
在C#中是否有与F#的List.map函数相同的功能?即将函数应用于列表中的每个元素,并返回包含结果的新列表.
就像是:
public static IEnumerable<TResult> Map<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> funky)
{
foreach (TSource element in source)
yield return funky.Invoke(element);
}
Run Code Online (Sandbox Code Playgroud)
是否已有内置方式或我应该只编写自定义扩展?
我从未见过语言有指数或幂运算符只采用浮点数?
例如:
2 ** 2 抛出错误 The type 'int' does not support any operators named 'Pow'
这个设计决定是否有正当理由?
受到F#中的度量单位的启发,尽管断言(这里)你无法用C#做到这一点,但我还有一个想法,那就是我一直在玩的.
namespace UnitsOfMeasure
{
public interface IUnit { }
public static class Length
{
public interface ILength : IUnit { }
public class m : ILength { }
public class mm : ILength { }
public class ft : ILength { }
}
public class Mass
{
public interface IMass : IUnit { }
public class kg : IMass { }
public class g : IMass { }
public class lb : IMass { }
} …Run Code Online (Sandbox Code Playgroud) 我一直在尝试向几个人解释switch语句和模式匹配(F#)之间的区别,但我还没有真正解释它.大多数时候他们只是看着我说"为什么你不只是使用if..then..else".
你会如何向他们解释?
编辑!感谢大家的精彩答案,我真的希望能够标出多个正确的答案.
我正在寻找一些可供学习的开源F#项目.有些东西不是片段,而是完整的项目,它们是F#特征的良好代表(即模式匹配,有区别的联合等).
我的目标主要是看看所有功能如何组合在一起,项目如何组织以及如何从功能角度解决问题.
我想在f#中匹配字符串的开头.不确定我是否必须将它们视为字符列表或什么.任何建议,将不胜感激.
这是我想要做的psuedo代码版本
let text = "The brown fox.."
match text with
| "The"::_ -> true
| "If"::_ -> true
| _ -> false
Run Code Online (Sandbox Code Playgroud)
所以,我想看一下字符串和匹配的开头.注意我不是在字符串列表上匹配只是写了上面作为我想要做的本质的想法.
我注意到越来越多的资源用于使用F#编程语言开发应用程序,并且想到了创建F#语言的问题.它是针对特定平台制作的,例如桌面,移动设备,Web应用程序吗?它还包括目前可用于开发.NET应用程序的其他编程语言中没有的功能吗?还可以使用F#为桌面,移动设备和Web创建应用程序,因为我们可以使用VB或C#吗?还有其他类似于F#的语言我可以用来交叉检查以更好地理解函数式编程的工作原理吗?
我使用Matlab作为原型工具学习了机器学习课程.由于我沉迷于F#,我想继续我在F#的机器学习研究.
我可能希望将F#用于原型设计和生产,因此机器学习框架将是一个很好的开始.否则,我可以从一组库开始:
最重要的资源(对我而言)是关于机器学习的书籍,博客文章和在线课程,使用函数式编程语言(F#/ OCaml/Haskell ......).
任何人都可以建议这些资源吗?谢谢.
编辑:
这是基于以下答案的摘要:
机器学习框架:
相关图书馆:
Math.NET Numerics:内部使用英特尔MKL和AMD ACML进行矩阵运算并支持统计功能.
Microsoft Solver Foundation:线性编程和优化任务的良好框架.
FSharpChart:F#中一个不错的数据可视化库.
阅读清单:
任何其他指针或建议也欢迎.