我将如何将这样的字符串 "13.2..2" 转换为这样的列表
[Just 1, Just 3, Nothing, Just 2, Nothing, Nothing, Just 2]
我看过 digitToInt 但它没有处理 Maybe Int 。有没有办法可以修改 digitToInt 来处理 Maybe Int

最佳答案

如果您想将所有非数字转换为 Nothing ,您可以使用 guards 和 fmap

import Data.Char

charToMaybeInt :: Char -> Maybe Int
charToMaybeInt  x
 | isDigit x = Just $ digitToInt x
 | otherwise = Nothing

main = putStrLn $ show $ fmap charToMaybeInt "13.2..2"

根据我的非专家理解,使用守卫比使用 if/else 更惯用。

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

10-14 06:23