首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单子和演员

单子和演员
EN

Stack Overflow用户
提问于 2010-08-30 05:42:05
回答 3查看 2.7K关注 0票数 8

我一直在试图找到任何关于什么时候应该使用monads而不是参与者(在并发场景中)的讨论,但我什么也没有发现。特别是,我想知道反应性扩展(LINQ )与F#的MailboxProcessor之间的关系。除了任何哲学推理之外,还请给出一些例子。

为了获得更好的上下文,更新,反应性扩展以IObservable/i观察者的形式实现连续单元。我并不是说我必须使用F#,只是F#有一个以MailboxProcessor<'T>的形式在.NET语言中可用的具体的“参与者模型”。

我想了解的是,何时使用monad (在本例中是延续monad)与参与者模型进行并发。如果monad (据我理解)不引入状态,则参与者有自己的内部状态,根据需要对其内部状态进行修改,以提供受保护的访问。

我见过许多使用这两种方法的例子: Rx和node.js (CPS,实际上不是延续monad)和F#的MailboxProcessor和Scala的Akka框架,我只是不知道为什么你会选择一个而不是另一个。

EN

Stack Overflow用户

发布于 2010-08-30 10:07:16

请原谅我的新手,因为我正在学习F#。

我很好奇地看到使用RX代替MailboxProcessor,如果你有任何相关资料的链接。

根据我有限的理解,我会在我自己的代码中选择MbP,因为在F#中设置事件有点麻烦(我可以从本文:MSDN中学到)。你需要RX的事件来连接到对吗?

与MbP一样,我所需要的只是一个受歧视的消息联合,一个在接收到给定消息时希望执行的函数列表。以及处理这件事的邮箱处理器。

在代码中,这一切看起来都很整洁。我可以把我的MbP放在一个模块中,然后我的“对象”模块看起来就像

  • 记录
  • 信息DU
  • 带有一些将数据发布到MbP的getter和setter的包装器。

对我来说,这看起来比我用事件编写代码要整洁得多,正如我链接到的那篇MSDN文章所描述的那样。

虽然我只是一个小F#,所以我可能距离我的计算距离一英里,这是一个外观和感觉的事情,而不是一个适合的选择(因为我还没有资格作出那个决定)。

票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3598124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档