มีเหตุผลที่ดีหรือไม่ที่ประเภทของ Prelude.read คือ
read :: Read a => String -> a
แทนที่จะคืนMaybeค่า?
read :: Read a => String -> Maybe a
เนื่องจากสตริงอาจไม่สามารถแยกวิเคราะห์ได้ Haskell จึงจะไม่เป็นธรรมชาติมากกว่านี้หรือ?
หรือแม้แต่สตริงเดิมจะมีสตริงเดิมEither String aอยู่ที่ไหนLeftหากไม่ได้แยกวิเคราะห์และRightผลลัพธ์จะเป็นอย่างไร
แก้ไข:
ฉันไม่ได้พยายามให้คนอื่นเขียนกระดาษห่อหุ้มที่เกี่ยวข้องให้ฉัน เพียงแค่ขอความมั่นใจว่าทำได้อย่างปลอดภัย
takeยอมรับใด ๆNum a => a? เหตุใดจึงมีกรณีพิเศษfmapสำหรับรายการ เหตุใดจึงFunctorไม่จำเป็นสำหรับMonadอินสแตนซ์ ฉันคาดว่าคำตอบจะคล้ายกับคำตอบของคำถามเหล่านี้และคำถามที่เกี่ยวข้อง