C'è una buona ragione per cui il tipo di Prelude.read è
read :: Read a => String -> a
piuttosto che restituire un Maybevalore?
read :: Read a => String -> Maybe a
Dal momento che la stringa potrebbe non essere analizzabile Haskell, quest'ultima non sarebbe più naturale?
O anche un Either String a, dove Leftconterrebbe la stringa originale se non analizza, e Rightil risultato se lo facesse?
Modificare:
Non sto cercando di convincere altri a scrivere un wrapper corrispondente per me. Sto solo cercando di rassicurarlo sul fatto che sia sicuro farlo.
readMaybeche presto venga aggiunta una funzione.
takeessere Integral n => n -> [a] -> [a]?
takeaccetta nessunoNum a => a? Perché esiste un caso speciale difmapelenchi per? PerchéFunctornon è richiesto per leMonadistanze? Mi aspetto che la risposta sia simile alle risposte a queste e ad altre domande correlate.