Haskell:连接两个IO字符串

d12磨砂

今天,我尝试连接两个IO字符串,但无法正常工作。

因此,问题是:假设我们有s1 :: IO Strings2 :: IO String如何实现功能(+++) :: IO String -> IO String -> IO String,该功能(++) :: [a] -> [a] -> [a]与IO String完全一样

而更普遍的问题是如何实现更普遍的功能(+++) :: IO a -> IO a -> IO a也许更一般?

比克利尔

您可以使用liftM2Control.Monad

liftM2 :: Monad m => (a -> b -> c) -> m a -> m b -> m c


> :t liftM2 (++)
liftM2 (++) :: Monad m => m [a] -> m [a] -> m [a]

另外,您可以使用do符号:

(+++) :: Monad m => m [a] -> m [a] -> m [a]
ms1 +++ ms2 = do
    s1 <- ms1
    s2 <- ms2
    return $ s1 ++ s2

这两个都是等效的。实际上,针对的定义liftM2实现为

liftM2 :: Monad m => (a -> b -> c) -> m a -> m b -> m c
liftM2 f m1 m2 = do
    val1 <- m1
    val2 <- m2
    return $ f val1 val2

很简单!它所做的只是从两个单子动作中提取值,并对它们应用2个参数的函数。这与liftM仅针对一个参数的函数执行此操作的函数相伴。另外,正如其他人指出的那样,您可以在中使用IOApplicative实例Control.Applicative并使用类似的liftA2功能。

您可能会注意到,在某些情况下,genericApplicative具有与generic相似的行为Monad,其原因是因为它们在数学上非常相似。实际上,对于每个Monad,您都可以利用Applicative它。因此,您也可以从中Functor脱颖而出Applicative许多人都对Functor-Applicative-Monad提案感到兴奋,该提案已经存在了一段时间,最终将在即将发布的GHC版本中实施。它们构成一个非常自然的层次结构Functor > Applicative > Monad

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

连接两个表,其中连接条件需要一个子字符串

来自分类Dev

聚合函数来连接连接两个表的字符串?

来自分类Dev

连接两个字符串:C

来自分类Dev

Git中web.config的两个不同的连接字符串

来自分类Dev

一个带有两个连接字符串的sql命令

来自分类Dev

将两个列表中的项目连接到字符串表达式

来自分类Dev

在8086 + MOVSB中连接两个给定的字符串不起作用

来自分类Dev

constexpr连接两个或多个字符字符串

来自分类Dev

连接两个Base64字符串,然后对其进行解码

来自分类Dev

连接两个字符串C ++

来自分类Dev

连接两个路径字符串以获得最终路径?

来自分类Dev

C#连接两个数组的字符串

来自分类Dev

如何连接两个JSX片段或变量或字符串和组件(在Reactjs中)?

来自分类Dev

将两个元素连接到数组中的字符串类型元素中

来自分类Dev

连接两个列表的笛卡尔积的字符串(最好没有for循环)

来自分类Dev

逐列连接两个具有字符串的df

来自分类Dev

如何连接两个单独的字符串

来自分类Dev

Ruby连接字符串数组,最后两个元素之间有空格

来自分类Dev

Git中web.config的两个不同的连接字符串

来自分类Dev

一个带有两个连接字符串的sql命令

来自分类Dev

在8086 + MOVSB中连接两个给定的字符串不起作用

来自分类Dev

这两个SQL Server连接字符串之间有什么区别

来自分类Dev

在c中连接两个单独字符串的大写字母

来自分类Dev

如何连接两个不相同单词的字符串

来自分类Dev

连接字符串的两个组成部分并标识组成部分

来自分类Dev

两个不同的(?)字符串

来自分类Dev

在C#中简单连接两个加密的字符串

来自分类Dev

如何组合两个字符串 i Haskell 并返回一个新字符串

来自分类Dev

读取两个输入字符串并连接它们

Related 相关文章

  1. 1

    连接两个表,其中连接条件需要一个子字符串

  2. 2

    聚合函数来连接连接两个表的字符串?

  3. 3

    连接两个字符串:C

  4. 4

    Git中web.config的两个不同的连接字符串

  5. 5

    一个带有两个连接字符串的sql命令

  6. 6

    将两个列表中的项目连接到字符串表达式

  7. 7

    在8086 + MOVSB中连接两个给定的字符串不起作用

  8. 8

    constexpr连接两个或多个字符字符串

  9. 9

    连接两个Base64字符串,然后对其进行解码

  10. 10

    连接两个字符串C ++

  11. 11

    连接两个路径字符串以获得最终路径?

  12. 12

    C#连接两个数组的字符串

  13. 13

    如何连接两个JSX片段或变量或字符串和组件(在Reactjs中)?

  14. 14

    将两个元素连接到数组中的字符串类型元素中

  15. 15

    连接两个列表的笛卡尔积的字符串(最好没有for循环)

  16. 16

    逐列连接两个具有字符串的df

  17. 17

    如何连接两个单独的字符串

  18. 18

    Ruby连接字符串数组,最后两个元素之间有空格

  19. 19

    Git中web.config的两个不同的连接字符串

  20. 20

    一个带有两个连接字符串的sql命令

  21. 21

    在8086 + MOVSB中连接两个给定的字符串不起作用

  22. 22

    这两个SQL Server连接字符串之间有什么区别

  23. 23

    在c中连接两个单独字符串的大写字母

  24. 24

    如何连接两个不相同单词的字符串

  25. 25

    连接字符串的两个组成部分并标识组成部分

  26. 26

    两个不同的(?)字符串

  27. 27

    在C#中简单连接两个加密的字符串

  28. 28

    如何组合两个字符串 i Haskell 并返回一个新字符串

  29. 29

    读取两个输入字符串并连接它们

热门标签

归档