当前位置: 首页 > 知识库问答 >
问题:

应用函子与单子的等价性

满增
2023-03-14
[(+3)] <*> [2,3,4]
[2,3,4] >>= (\x->[x+3])

最后,我没有看到这里的等价或延伸。Monad是一种不同的风格,在另一个故事中很有用。

抱歉我的无知。

共有1个答案

宇文和昶
2023-03-14

如果TMonad的实例,那么您可以使它成为Applicative的实例,如下所示:

instance Functor T where
    fmap = liftM

instance Applicative T where
    pure = return
    (<*>) = ap

liftm定义为

liftM   :: (Monad m) => (a1 -> r) -> m a1 -> m r
liftM f m1              = do { x1 <- m1; return (f x1) }

AP定义为

ap                :: (Monad m) => m (a -> b) -> m a -> m b
ap                =  liftM2 id

liftM2  :: (Monad m) => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r
liftM2 f m1 m2          = do { x1 <- m1; x2 <- m2; return (f x1 x2) }
 类似资料:
  • 因此,在java中,我们有三元运算符(?),它有时很有用,便于通过if-else内联计算某些值。例如: 我知道kotlin的同义词是: 但我过去喜欢Java中的三元运算符,用于简短的表达式条件,以及在向方法传递值时。有没有Kotlin等价物?

  • 问题内容: 是否有与的函数等效的也就是说,给定多个相同长度的数组,将创建一个成对的数组。 例如,如果我有三个看起来像这样的数组: 输出数组应为: 问题答案: 这是一个时髦的Ecmascript 6版本: 相当于插图。到: (并且指出ES6具有可变参数语法,因此以下函数定义将类似于python,但请参见下文的免责声明…这将不是其自身的逆,因此)将不相等x;尽管正如Matt Kramer指出的那样例如

  • 问题内容: 这个问题已经在这里有了答案 : 等于(=)和IN的性能差异(带一个文字值) (7个答案) 2年前关闭。 这是一个非常简单的问题,我假设答案是“没关系”,但无论如何我都必须问… 我有一个用PHP构建的通用sql语句: 假设进行了先期有效性检查(一个数组至少包含1个项目且所有数值都是),我应该改为执行以下操作吗? 还是检查的开销不值得在实际的sql语句中保存(如果有的话)? 问题答案: 两

  • 我想在CameraX中使用,但要调整一些相机设置,如自动对焦或自动白平衡、曝光和帧长。 下面是一个我需要的设置示例,以及我如何用Camera2设置它们:

  • 问题内容: 我似乎无法使用RODBC的以下条款来工作。我接受了@Lars Br的建议。的报价,但它仍然无法正常工作。我是 我知道占位符的作品,因为我在qlikview中使用过 所以下面的代码有效 但是当我尝试添加以下内容时(我在传递日期参数) 现在我知道我的单引号弄乱了它,所以我尝试了以下内容。 用双引号替换所有单引号-这不起作用 将所有单引号封装在双引号中 完全删除所有单引号。 问题答案: 在这

  • 问题内容: 在oracle中,该函数允许我将其与子句一起使用。但是,它不支持使用带有或关键字的窗口。 我有一个来自商店寄存器的数据集(针对该问题进行了简化)。请注意,寄存器表的数量始终为1-一项,一条交易行。 我必须将此数据“匹配”到特殊订购系统中的表,在该系统中,项目按数量分组。请注意,系统可以在多行上具有相同的项目ID(即使项目相同,订购的组件也可能不同)。 我可以匹配此数据的 唯一 方法是按