haskell - 如何将字符串转换为 Maybe Int 列表

标签 haskell

我将如何转换这样的字符串 "13.2..2"到这样的列表
[Just 1, Just 3, Nothing, Just 2, Nothing, Nothing, Just 2]
我看过digitToInt但它不照顾Maybe Int .有什么办法可以修改digitToInt办理Maybe Int ?

最佳答案

您可以使用 isDigit测试是否digitToInt将会成功。

λ> fmap (\c -> if isDigit c then Just (digitToInt c) else Nothing) "13.2..2" :: [Maybe Int]
[Just 1, Just 3, Nothing, Just 2, Nothing, Nothing, Just 2]

我们可以引入一个新函数来稍微清理一下:
digitToIntMay :: Char -> Maybe Int
digitToIntMay c = if isDigit c then Just (digitToInt c) else Nothing

λ> fmap digitToIntMay "13.2..2" :: [Maybe Int]
[Just 1, Just 3, Nothing, Just 2, Nothing, Nothing, Just 2]

关于haskell - 如何将字符串转换为 Maybe Int 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43960597/

相关文章:

haskell - 是否有实例替代((->)r)?

haskell - 如何对数据对象进行自动数据序列化?

haskell - 为什么Haskell中有 "data"和 "newtype"?

data-structures - 覆盖数据结构?

Haskell 二次解查找器 - 错误

haskell - 为更高级的数据派生实例

haskell - GHC:插入编译日期

java - Haskell 可以在编译时捕获哪些类型的错误,而 Java 不能?

haskell - 如何在 Haskell 中使用可变数据有效地建模关系

haskell - 如何使这个算法更加懒惰而不重复自己?