在C#中使用Monads的令人信服的场景是什么?

Kev*_*Won 21 .net c# monads

让我先说明我对Monads有一种幼稚的理解.我已经阅读了Monads上的各种主题,并对这个概念进行了几个小时的研究.我对这个术语感到很不舒服,但我认为可以说我通常理解Monad是什么/做什么.

我是一名C#开发人员,希望改进我的工作方式.在我的Monaducation中进一步帮助我的是在C#中看到Monad的真实世界应用(即通过linq SelectMany(或其他),这显然比在oldskool C#中解决同类问题的其他方法有所改进.

有没有人见过这样的野兽?

Bri*_*ian 11

下面是一个这样的场景:你想创作一个解析库(嵌入式DSL的一个很好的例子),你发现最好的是monadic解析器组合库.因此,您可以利用LINQ语法糖来编写C#代码,这些代码具有与您正在解析的语言语法相同的结构,并且您可以获得实时语义分析和错误恢复的强大编程模型的好处.有关说明,请参阅此博客.


Gre*_*con 5

找到毕达哥拉斯三重奏:

  var r = from a in Enumerable.Range(1, 25)
          from b in Enumerable.Range(a, 25-a)
          from c in Enumerable.Range(b, 25-b)
          where a*a + b*b == c*c
          select new [] { a, b, c };
Run Code Online (Sandbox Code Playgroud)