Tag: f#

如何在C#中复制F#区分联合类型?

我创建了一个名为Actor的新类,它处理传递给它的消息。 我遇到的问题是弄清楚将相关但不同的消息传递给Actor的最优雅方式是什么。 我的第一个想法是使用inheritance,但它似乎是如此膨胀,但它是强烈的类型,这是一个明确的要求。 有什么想法吗? 例 private abstract class QueueMessage { } private class ClearMessage : QueueMessage { public static readonly ClearMessage Instance = new ClearMessage(); private ClearMessage() { } } private class TryDequeueMessage : QueueMessage { public static readonly TryDequeueMessage Instance = new TryDequeueMessage(); private TryDequeueMessage() { } } private class EnqueueMessage : QueueMessage { […]

什么是catamorphism,可以在C#3.0中实现吗?

我正在尝试了解catamorphisms,我已经阅读了维基百科文章以及F#博客上F#主题系列中的前几篇文章 。 我理解这是折叠的概括(即,将许多值的结构映射到一个值,包括值列表到另一个列表)。 我认为折叠列表和折叠树是一个典型的例子。 可以使用LINQ的Aggregate运算符或其他一些更高阶的方法在C#中显示它吗?

WCF性能,延迟和可伸缩性

我正在尝试将F#中的简单异步TCP服务器移植到C#4。服务器接收连接,读取单个请求并在关闭连接之前流回一系列响应。 C#4中的异步看起来很乏味且容易出错,所以我想我会尝试使用WCF。 该服务器不太可能在野外看到1,000个同时发出的请求,因此我认为吞吐量和延迟都很重要。 我在C#中编写了一个最小的双工WCF Web服务和控制台客户端。 虽然我使用的是WCF而不是原始套接字,但这已经是175行代码,而原始代码只有80行。 但我更关注性能和可扩展性: WCF的延迟是154倍。 WCF的吞吐量低54倍。 TCP可以轻松处理1,000个并发连接,但WCF仅在20个时间内阻塞。 首先,我正在使用所有内容的默认设置,所以我想知道是否有任何我可以调整以改善这些性能数据? 其次,我想知道是否有人正在使用WCF进行此类事情,或者它是否是错误的工具? 这是我在C#中的WCF服务器: IService1.cs [DataContract] public class Stock { [DataMember] public DateTime FirstDealDate { get; set; } [DataMember] public DateTime LastDealDate { get; set; } [DataMember] public DateTime StartDate { get; set; } [DataMember] public DateTime EndDate { get; set; } [DataMember] public decimal Open […]

你能在一个项目中混合使用.net语言吗?

你能在一个项目中混合使用.net语言吗? 所以预编译,我想调用其他源文件的类和方法。 对于网络和应用程序? 特别是我对F#和C#感兴趣。

C#中的管道转发

继续我在C#中表达F#想法的调查 ,我想要一个管道前进算子。 对于包含在IEnumerable中的任何东西,我们已经拥有它,因为你可以.NextFunc()到你心中的内容。 但是,例如,如果最后有任何类似折叠的缩减,则无法将其结果输入函数。 这里有两个扩展方法,我想知道是否有其他人尝试过这个,如果这是一个好主意(编辑:现在使用Earwicker的可能包含): public static void Pipe(this T val, Action action) where T : class { if (val!=null) action(val); } public static R Pipe(this T val, Func func) where T : class where R : class { return val!=null?func(val):null; } 然后你可以写下这样的东西: Func readlines = (f) => File.ReadAllLines(f); Action writefile = (f, s) => […]

在函数式编程风格中最好完成哪些任务?

我刚刚发现了函数编程风格,我相信它会减少开发工作,使代码更容易阅读,使软件更易于维护。 然而,问题是我在说服任何人。 好吧,最近我有机会就如何减少软件开发和维护工作发表演讲,我想向他们介绍函数式编程的概念以及它如何使团队受益。 我有这样的想法,即向人们展示两组完全相同的代码,一个以非常强制的方式编码,另一个以非常实用的方式编写,以表明函数式编程可以使代码更简单,更容易理解和因此可维护。 有没有这样的例子,除了Luca Bolognese的着名的正方形例子之外?