Haskell - Màxim i mínim 3

Feu un programa que llegeixi tots els enters de l’entrada estàndard i
escrigui el més gran i el més petit. En cas de no haver enters o algun
element que no és un enter hauria d’escriure Nothing.

Necesitareu la funció readMaybe per a la conversió a enters:

    import Text.Read (readMaybe)
    readMaybe :: Read a => String -> Maybe a

i les funcions foldM i join per a que el recurregut pari en trobar un
resultat invàlid:

    import Control.Monad (join,foldM)
    ==
    join :: Monad m => m (m a) -> m a
    join $ Just $ Just 2 = Just 2
    ==
    foldM :: (Foldable t, Monad m) => (b -> a -> m b) -> b -> t a -> m b 
    foldM f a1 [x1, x2, ..., xm]
    ==
    do
      a2 <- f a1 x1
      a3 <- f a2 x2
      ...
      f am xm

Restriccions:

- No podeu utilitzar la recursivitat per resoldre aquest exercici.

- Només podeu utilitzar un foldM per recorrer la llista d’enters.

- Heu d’aprofitar les instàncies de functors, applicatius i mònades
  sempre que pugueu.

Nota: podeu probar si la vostra funció para utilitzant undefined.
Quelcom com f [Just 3, Nothing, undefined] hauria de donar Nothing. Si
dona un error és que no està parant.

Informació del problema

Autoria: Gerard Escudero

Generació: 2026-04-23T12:34:35.012Z

© Jutge.org, 2006–2026.
https://jutge.org
