Questions tagged «f#»

F#是.NET的简洁,表达性强,高效的功能和面向对象的语言,可帮助您编写简单的代码来解决复杂的问题。

3
对象初始化语法
我只是从F#开始,找不到像C#3那样进行对象初始化的语法。 即给出此: public class Person { public DateTime BirthDate { get; set; } public string Name { get; set; } } 我该如何在F#中编写以下代码: var p = new Person { Name = "John", BirthDate = DateTime.Now };

8
使用C#vs F#或F#vs C#有什么好处?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我在一家技术公司工作,该公司的原型比产品交付还要多。我刚刚被问到C#和F#有什么区别,为什么MS创建F#,以及在什么情况下会比C#更好呢? 我使用该语言已有一段时间了,我很喜欢它,因此我可以轻松地继续学习F#的强大功能,但是我缺乏C#的经验来说明为什么我们应该在另一种语言上使用。 使用C#vs F#或F#vs C#有什么好处?
93 c#  .net  f# 


5
更高种类的类型什么时候有用?
我从事F#开发工作已有一段时间了,我喜欢它。但是我知道在F#中不存在的一个流行词是类型较高的类型。我已经阅读了有关高类型类型的材料,我想我理解它们的定义。我只是不确定为什么它们有用。有人可以提供一些示例,说明在Scala或Haskell中哪种类型更高级的类型更容易,而这需要F#中的解决方法?同样对于这些示例,如果没有更高类型的类型(或者在F#中反之亦然),解决方法将是什么?也许我只是很习惯解决它,以至于我没有注意到该功能的缺失。 (我认为)我得到了替代myList |> List.map f或myList |> Seq.map f |> Seq.toList更高种类的类型,使您可以简单地编写myList |> map f并返回List。很好(假设是正确的),但是看起来有点小?(难道不能简单地通过允许函数重载来完成吗?)我通常Seq无论如何都会转换为,然后我可以转换为以后想要的任何东西。再说一次,也许我只是太习惯了。但是,有没有在那里,kinded更高类型的任何例子真的可以节省你无论是在击键或类型安全?

1
WP7和F#上的异步POST失败
当我let! read = from.AsyncRead buf在F#中执行操作时,它阻塞并且直到TCP套接字死掉才返回。为什么?我该如何解决? 其代码: module StreamUtil open System.IO /// copy from 'from' stream to 'toStream' let (|>>) (from : Stream) (toStream : Stream) = let buf = Array.zeroCreate<byte> 1024 let rec doBlock () = async { let! read = from.AsyncRead buf if read <= 0 then toStream.Flush() return …

8
F#显式匹配vs函数语法
抱歉,标题模糊,但这部分问题是这两种语法样式分别是什么: let foo1 x = match x with | 1 -> "one" | _ -> "not one" let foo2 = function | 1 -> "one" | _ -> "not one" 另一部分是两者之间有什么区别,什么时候我要使用其中一个?
87 syntax  f# 

1
F#中的命名空间和模块之间有什么区别?
我刚刚开始学习F#(几乎没有使用.NET的经验),所以请原谅我一个很简单的问题:F#中的命名空间和模块之间的区别是什么? 谢谢 戴夫 编辑:感谢您的答案布莱恩。这就是我想知道的。只是澄清一下:您还可以打开一个名称空间吗(类似于C#using语句)?
85 f#  module  namespaces 


5
F#:让可变与引用
首先,我承认这个问题可能是重复的;让我知道。 我很好奇在需要可变性的情况下通常的“最佳实践”是什么。F#为此提供了两种功能:let mutable绑定(似乎在“大多数”语言中像变量一样工作ref)以及需要显式取消引用才能使用的引用单元格(通过函数创建)。 有一对夫妇的情况下,其中一个是“被迫”转化为一种或另一种:.NET互操作倾向于使用可变带<-,并在工作流程的计算必须使用ref带:=。因此,这些情况非常明确,但是我很好奇在这些情况之外创建自己的可变变量时该怎么做。一种风格比另一种有什么优势?(也许对实现有进一步的了解会有所帮助。) 谢谢!
82 f#  mutable 

5
何时在F#中使用序列而不是列表?
我知道列表实际上包含值,而序列是的别名IEnumerable<T>。在实际的F#开发中,什么时候应该使用序列而不是列表? 这是一些可以使序列更好的原因: 与需要.NET的其他.NET语言或库进行交互时 IEnumerable<T>。 需要表示一个无限的序列(在实践中可能并不真正有用)。 需要懒惰的评估。 还有其他吗?
82 list  f# 

4
从C#调用F#代码
我正在玩F#和C#,并想从C#调用F#代码。 通过在相同的解决方案中有两个项目,并将C#代码的引用添加到F#项目中,我设法使其在Visual Studio中能够以其他方式工作。完成此操作后,我可以调用C#代码,甚至在调试时逐步执行它。 我想做的是来自C#的F#代码,而不是来自F#的C#代码。我在C#项目中添加了对F#项目的引用,但是它不能像以前那样工作。我想知道如果不手动进行操作是否可行。
80 c#  interop  f# 


5
F#在同一项目的另一个文件中定义/使用类型/模块
希望这会很容易。我有一个F#项目(最新的F#CTP),其中包含两个文件(Program.fs,Stack.fs)。在Stack.fs中,我有一个简单的名称空间和类型定义 Stack.fs namespace Col type Stack= ... 现在,我通过声明将名称空间包含在Program.fs中 open Col 这不起作用,并给我错误“未定义名称空间或模块Col”。但是它是在同一项目中定义的。我必须错过一些明显的东西
77 f# 

1
F#中的应用程序架构/组成
最近,我一直在C#中将SOLID进行到相当极端的水平,并且在某个时刻意识到,除了如今编写函数之外,我基本上没有做其他事情。在我最近再次开始研究F#之后,我发现对于我现在正在做的大部分事情来说,这可能是更合适的语言选择,因此我想尝试将一个实际的C#项目移植到F#中作为概念证明。我想我可以(以一种非常惯用的方式)发布实际的代码,但是我无法想象这样一个架构看起来会像我在C#中一样灵活地工作。 我的意思是说,我有很多小的类和接口是使用IoC容器编写的,而且我也经常使用诸如Decorator和Composite的模式。这导致(我认为)非常灵活和可发展的整体体系结构,使我可以轻松地在应用程序的任何位置替换或扩展功能。根据所需的更改量,我可能只需要编写一个接口的新实现,并在IoC注册中替换它即可完成。即使变化更大,我也可以替换对象图的一部分,而应用程序的其余部分将像以前一样保持原样。 现在使用F#,我没有类和接口(我知道我可以,但是我认为那是我想进行实际函数编程的要点),我没有构造函数注入,也没有IoC容器。我知道我可以使用高阶函数来完成类似Decorator模式的操作,但这似乎并没有像构造函数注入类那样给我带来灵活性和可维护性。 考虑以下C#类型: public class Dings { public string Lol { get; set; } public string Rofl { get; set; } } public interface IGetStuff { IEnumerable<Dings> For(Guid id); } public class AsdFilteringGetStuff : IGetStuff { private readonly IGetStuff _innerGetStuff; public AsdFilteringGetStuff(IGetStuff innerGetStuff) { this._innerGetStuff = innerGetStuff; } public …

10
科学计算中的F#性能
我很好奇F#性能与C ++性能相比如何?我问了一个关于Java的类似问题,我得到的印象是Java不适合进行大量数字运算。 我已经读到F#应该具有更高的可扩展性和更高的性能,但是与C ++相比,这种实际性能如何?有关当前实施的具体问题是: 浮点运算的效果如何? 它允许矢量指令吗 对优化编译器有多友好? 它有多少内存占用空间?是否允许对内存局部性进行细粒度控制? 它是否具有用于分布式存储处理器(例如Cray)的容量? 在涉及大量处理的计算科学中,它具有哪些有趣的功能? 是否有使用它的实际科学计算实现? 谢谢

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.