Me pregunto cómo verificar el éxito o el fracaso (lo que resulta en Prelude.read: sin análisis) de la función de lectura en Haskell. En mi caso, ejecuto "(leer formateado :: Int)" en el formato de código de una estructura de registro, donde los campos pueden ser un solo Int en forma de cadena pero también pueden contener algo más. Quiero aplicar mi función solo a los campos donde la lectura devuelve un Int. Gracias.
Debería considerar readMaybe de Text.Read. Una vez que se devuelve el valor dentro de la mónada Maybe , puede usar case para decidir qué hacer.
import Text.Read add1 :: String -> Maybe Int add1 str = case intval of Just x -> Just (x + 1) Nothing -> Nothing where intval = readMaybe str main = do print $ add1 "7" print $ add1 "7.0"Si quiere ser más aventurero, ahora que los datos están en la mónada Maybe, podemos tratar a Maybe como un funtor y usar funtores aplicativos para procesarlos.