相关疑难解决方法(0)

什么是monad?

最近简要介绍了Haskell,对于monad本质上是什么,简单,简洁,实用的解释是什么?

我发现我遇到的大多数解释都是相当难以接近的,缺乏实际细节.

monads haskell functional-programming terminology

1373
推荐指数
28
解决办法
23万
查看次数

Monad用简单的英语?(对于没有FP背景的OOP程序员)

就OOP程序员所理解的而言(没有任何函数编程背景),monad是什么?

它解决了什么问题,它使用的最常见的地方是什么?

编辑:

为了澄清我一直在寻找的理解,让我们假设您正在将具有monad的FP应用程序转换为OOP应用程序.你会怎么做把monad的职责移植到OOP应用程序?

oop monads functional-programming

705
推荐指数
14
解决办法
12万
查看次数

任何人都可以解释Monads吗?

可能重复:
什么是monad?

我想我明白'也许莫纳德'是什么,但我不确定其他类型.

monads glossary haskell functional-programming

79
推荐指数
0
解决办法
1万
查看次数

关于Haskell中monad的一些问题

我正在学习monads并且有一些问题.

这就是我现在所处的位置.请纠正我错在哪里.

  • >>=标志为中缀运算符.中缀运算符是带有两个参数(左侧和右侧)并返回值的函数.

  • >>=符号称为绑定运算符并具有签名Monad m => m t -> (t -> m u) -> m u.但是,这些类型似乎没有排在这里.我们得到一个类型的值,m t第二个参数是一个带有a的函数t.(我不知道如何连接点.)

  • 这必定意味着绑定功能,在某种程度上能够去除mm t为了得到t并把它传递给函数.

这是我的问题:

  • 是否能够mm t仅在此类绑定运算符内部执行的操作中删除.这个绑定运算符是否有一些特殊的特权?

  • 它与状态变化有什么关系?我理解(我认为)monad的目标是"包装"副作用,以便它们与程序的其余部分隔离开来.但是绑定运算符在这方面的作用是什么?

monads haskell

11
推荐指数
3
解决办法
1371
查看次数

是否已经内置了这些功能性的C#/ .NET构造?g(h())或

public static Func<V> To<T, V>(this Func<T> g, Func<T, V> h)
{
    return () => h(g());
}

public static Func<T> ToIdentity<T>(this T t)
{
    return () => t;
}
Run Code Online (Sandbox Code Playgroud)

在延迟评估时,我有时会使用这些和其他人.这些已经在.net库中吗?

编辑:

以下是一个示例用法:

public static string SuffixColumn(this string v, string suffix, int columns)
{
    return
    v.ToIdentity()
        .ToScrubbedHtml()
        .ToFormat(() => "{0} " + suffix.ToLower().PadLeft(columns, ' '))
        .ToErrorText(v, suffix, columns)();
}
Run Code Online (Sandbox Code Playgroud)

ToErrorText将'v'检查为合法(非错误代码,非null等),如果好,它运行链接在Func中,如果不好则生成故障安全文本结果.如果v,后缀或列不好,则永远不会调用ToFormat.(因此延迟/未评估的使用).

ToFormat几乎是提供的Func和string.Format的组合.ToIdentity用于将v提升为Func,然后链中的所有内容都基于T的一些Func.

.net c# monads functional-programming

10
推荐指数
1
解决办法
1083
查看次数

在C#中可能/选项单子

在2015年,C#中可能有任何“官方”的monad吗?理想情况下,它将可以使用ala Scala的Option,Some和None类型。

C#似乎具有所需的所有内容,即co / contravariance和lambda。

我之所以这么问,是因为我最近开始在一家使用Unity的公司工作,并且遇到了很多延迟的初始化工作。为了避免NullPointerException,我想邀请他们进入monad世界。关于这一点有什么想法,还是我们应该简单地以其他方式处理?

c# monads option maybe

6
推荐指数
1
解决办法
2682
查看次数