C'è una buona ragione per cui il tipo di Prelude.read è
read :: Read a => String -> a
piuttosto che restituire un Maybe
valore?
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 Left
conterrebbe la stringa originale se non analizza, e Right
il 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.
readMaybe
che presto venga aggiunta una funzione.
take
essere Integral n => n -> [a] -> [a]
?
take
accetta nessunoNum a => a
? Perché esiste un caso speciale difmap
elenchi per? PerchéFunctor
non è richiesto per leMonad
istanze? Mi aspetto che la risposta sia simile alle risposte a queste e ad altre domande correlate.