Understanding Functors, Applicatives and Monads in Swift
นี่คือตัวเลขธรรมดาๆ อาจหมายถึงค่าใดๆ (value) หรืออาจถูกชี้ด้วยสิ่งที่เราเรียกว่า "ตัวแปร" และพวกเรารู้วิธีการเรียกใช้ฟังก์ชั่นกับค่าดังกล่าว จากนั้น ลองคิดว่าค่าดังกล่าวอยู่ใน Context สักที่หนึ่ง (เราอาจจะจินตนาการเป็นกล่องที่มีค่าใดๆ อยู่ด้านในก็ได้) คราวนี้เมื่อเราพยายามจะเรียกใช้ฟังก์ชั่นกับค่าดังกล่าว เราอาจจะได้ผลลัพธ์ที่แตกต่างออกไปขึ้นอยู่กับ Context ที่มันอยู่ นี่คือพื้นฐานแนวคิดของ Functors, Applicatives และ Monads ซึ่ง Optional Type ใน Swift ประกาศ Context ไว้ 2 แบบนั่นคือ Coding .... อีกไม่นาน เราจะได้เห็นกันว่า .Some(T) กับ .None แตกต่างกันอย่างไร แต่ก่อนอื่นเรามาพูดถึง Functors กันก่อน Functors เมื่อค่านั้นๆ ถูกห่อหุ้มด้วย Context ใดๆ เราไม่สามารถที่จะนำค่านั้นมาใช้กับฟังก์ชั่นตรงๆ ได้ ดังนั้น map จึงเข้ามา (fmap ใน Haskell) map รู้วิธีว่าจะสามารถใช้ฟังก์ชั่นกับค่าที่อยู่ด้านในกล่องได้อย่างไร (ผมอาจจะพิมพ์ "กล่อง" กับ "Context" สลับไปมา ขอให้เข้าใจว่ามันคือสิ่งเดียวกัน) ตัวอย่างเช่น ถ้าเราต้องการใช้ฟังก์ชั่...