首页 > 解决方案 > 将 `a -> Maybe b` 函数应用于 `Maybe a`

问题描述

假设我有一个函数,它从编码为字符串的整数列表中解析parse :: String -> Maybe (Integer, String)第一个整数,并返回剩余字符串在哪里或解析失败。is1,2,3Just (i, s')s'Nothing

然后我怎样才能简洁地将这个函数应用于一个Maybe Stringparse <$> maybeString具有冗余类型Maybe (Maybe (Integer, String))并为此编写自定义模式匹配函数似乎是矫枉过正。

<$>更一般地说:是否有类型的等价物(a -> f b) -> f a -> f b(或者那没有意义?)。

编辑:我很愚蠢,我才意识到这有 Hoogle。这就是我们需要 Monads 的目的吗?(我还没有达到 Haskell 的那部分)。

标签: haskell

解决方案


听起来您正在寻找(>>=)可以使用 like的内容maybeString >>= parse。这要求您正在使用的数据类型是Maybe满足的 Monad。


推荐阅读