ความรู้สึกหลังอ่าน The Power of Composition (Scott Wlaschin) - พอพยายามทำ Composition ก็ไปเจอ Currying กับ Monad
(ohyecloudy.com)- Composition ซึ่งเป็นหนึ่งในวิธีการนำกลับมาใช้ซ้ำ เกี่ยวข้องกับชนิดข้อมูลและฟังก์ชัน
- ชนิดข้อมูลสามารถประกอบกันแบบ AND หรือ OR
- เมื่อจำนวน input และ output เท่ากัน การทำ function composition จะง่าย
- แค่นำ output ของฟังก์ชันหนึ่งส่งต่อเป็น input ของฟังก์ชันถัดไปก็จบ
- เมื่อจำนวนไม่เท่ากัน ก็ต้องมีวิธีแก้ปัญหานี้
- เมื่อจำนวน input มากกว่า ใช้ Currying
- ทำให้จำนวน input เหลือเพียงหนึ่ง
- เมื่อจำนวน output มากกว่า ใช้ Monad
- ทำให้จำนวน output เหลือเพียงหนึ่ง แล้วแยกเป็นกรณีที่ประมวลผลแล้วหรือยังไม่ได้ประมวลผล
- ถ้าประมวลผลแล้ว ก็ส่งต่อไปยังฟังก์ชันถัดไปได้เลย
- ถ้ายังไม่ได้ประมวลผล ก็ให้ฟังก์ชันลองจัดการ
- พอมารู้ทีหลัง ที่แท้นี่ก็คือ Monad
- ห่อ output ไว้ใน Monad แล้วใช้ bind เพื่อประกอบฟังก์ชัน
- ทำให้จำนวน output เหลือเพียงหนึ่ง แล้วแยกเป็นกรณีที่ประมวลผลแล้วหรือยังไม่ได้ประมวลผล
พออธิบายด้วยการประกอบฟังก์ชันพร้อมตอบคำถามว่า "ทำไม?" ก็เลยเข้าใจได้ดีมาก ก่อนหน้านี้เคยอ่านบทความที่อธิบายโมนาดด้วยแนวประมาณว่าเอาใส่กล่องแล้วค่อยหยิบออกมา ซึ่งตอนนั้นไม่ค่อยเข้าใจนัก พอมาคิดตอนนี้ น่าจะเป็นเพราะบทความแบบนั้นไม่ได้อธิบายคำว่า "ทำไม" นั่นเอง
2 ความคิดเห็น
อ่านได้เพลินมากครับ~
อ่านแล้วเข้าใจง่ายดีครับ พอมองแบบนี้ก็เข้าใจได้ง่ายนะ