Czy istnieje dobry powód, dla którego jest to typ Prelude.read
read :: Read a => String -> a
zamiast zwracać Maybe
wartość?
read :: Read a => String -> Maybe a
Skoro łańcuch Haskell może nie dać się przeanalizować, czy to drugie nie byłoby bardziej naturalne?
Lub nawet Either String a
, gdzie Left
zawierałby oryginalny ciąg, gdyby nie został przeanalizowany, a Right
wynik, gdyby tak się stało?
Edytować:
Nie próbuję nakłonić innych do napisania dla mnie odpowiedniego opakowania. Po prostu szukam pewności, że można to bezpiecznie zrobić.
readMaybe
wkrótce zostanie dodana funkcja.
take
być Integral n => n -> [a] -> [a]
?
take
akceptuje żadnegoNum a => a
? Dlaczego istnieje specjalny przypadekfmap
dla list? DlaczegoFunctor
nie jest to wymagane wMonad
przypadku instancji? Oczekuję, że odpowiedź będzie podobna do odpowiedzi na te i pokrewne pytania.