Có một lý do chính đáng tại sao loại Prelude.read làTại sao Prelude.read của Haskell không trả về một Có thể?
read :: Read a => String -> a
hơn là trả lại một giá trị Maybe
?
read :: Read a => String -> Maybe a
Vì chuỗi có thể không phân tích cú pháp Haskell, liệu chuỗi này có thể tự nhiên hơn không?
Hoặc thậm chí là Either String a
, trong đó Left
sẽ chứa chuỗi gốc nếu nó không phân tích cú pháp và Right
kết quả nếu nó đã làm?
Edit:
Tôi không cố gắng để có được những người khác để viết một wrapper tương ứng đối với tôi. Chỉ cần tìm kiếm sự bảo đảm rằng nó an toàn để làm như vậy.
Tại sao không 'take' chấp nhận bất kỳ 'Num a => a'? Tại sao có một trường hợp đặc biệt của 'fmap' cho danh sách? Tại sao 'Functor' không được yêu cầu cho các cá thể' Monad'? Tôi hy vọng câu trả lời sẽ giống như câu trả lời cho những câu hỏi này và những câu hỏi liên quan. – delnan
Vâng, đó là lý do tại sao tôi nói nó theo cách tôi đã làm, để lại các tùy chọn mở mà không có lý do chính đáng. Trong khi tôi cũng nghi ngờ có thể không có, giống như cho các ví dụ nổi tiếng bạn đưa ra, nó là giá trị yêu cầu để đảm bảo rằng viết wrapper của riêng tôi sẽ không tạo ra các vấn đề không lường trước được hạ lưu. –
Tôi hy vọng một chức năng 'readMaybe' sẽ sớm được bổ sung. – augustss