มีเหตุผลที่ดีหรือไม่ที่ประเภทของ 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
อินสแตนซ์ ฉันคาดว่าคำตอบจะคล้ายกับคำตอบของคำถามเหล่านี้และคำถามที่เกี่ยวข้อง