有没有在网上提供的C#/ F#性能比较来显示正确使用新的F#语言?
受F#中的度量单位的启发,尽pipe( 在这里 )断言你不能用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 { […]
我想了解阴影和嵌套函数的机制是如何工作的。 例如: let func y = let dup y = y + y let z = dup y let dup y = let dup z = let y = y * z y let z = y y dup z + z;; val func : int -> int > func 3;; val it : int […]
我在F#中偶然发现了这个问题。 假设我想声明两种相互引用的types: type firstType = | T1 of secondType //……………. type secondType = | T1 of firstType //……………. 我该怎么做,所以编译器不会产生错误?
出于好奇,我试图用C#生成一个尾调用操作码。 斐波纳契是一个很容易的,所以我的c#例子看起来像这样: private static void Main(string[] args) { Console.WriteLine(Fib(int.MaxValue, 0)); } public static int Fib(int i, int acc) { if (i == 0) { return acc; } return Fib(i – 1, acc + i); } 如果我在发行版中构build它,并且在不进行debugging的情况下运行,我不会发生堆栈溢出。 debugging或运行它没有优化,我确实得到一个堆栈溢出,这意味着在优化(这是我所期望的)发布时,尾部调用正在工作。 这个MSIL看起来像这样: .method public hidebysig static int32 Fib(int32 i, int32 acc) cil managed { // Method Start RVA 0x205e […]
我有点困惑,如何让两个方法来调用对方(即,有A()调用B()和B()调用A() )。 看起来F#只是在代码中遇到了方法,所以如果没有,就说没有定义值或构造函数 。 我在这里错过了非常基本的东西吗?
我为一家技术公司工作,该公司比产品发货做更多的原型。 我刚刚被问到C#和F#之间有什么区别,为什么MS创buildF#和什么情况会比C#更好。 我已经使用了一段时间的语言,我喜欢它,所以我可以轻松地继续关于F#的伟大function,但是我缺乏C#的经验来说明为什么我们应该使用它。 使用C#vs F#或F#vs C#有什么好处?
编程采访中的一个常见任务(不是从我的访谈经验来看)是采取一个string或一个整数,并列出每一个可能的排列。 有没有这样做的例子和解决这个问题的逻辑? 我已经看到了一些代码片段,但他们没有很好的评论/解释,因此很难遵循。