Posts

Showing posts with the label functional

Understanding Functors, Applicatives and Monads in Swift

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

Functional Programming should be your #1 priority for 2015

Image
OOP cannot save us from the Cloud monster anymore. คุณอาจจะเคยได้ยินคำบางคำเช่น "Clojure", "Scala", "Erlang" หรือ "Java มี Lambdas แล้วนะเว้ย" และอาจจะรู้ว่ามีอะไรบางอย่างที่เกี่ยวกับ Functional Programming ถ้าคุณได้มีส่วนร่วมในสังคมของพัฒนาโปรแกรมใดก็ตาม เรื่องนี้เป็นเรื่องที่กำลังเป็นที่นิยมอย่างมาก ถ้าลอง Googling คำว่า Functional Programming คุณจะเห็นว่าไม่มีอะไรใหม่เลย เพราะภาษาโปรแกรมตัวที่สองที่กล่าวถึงด้านบน มันถูกสร้างตั้งแต่ปี 1950 และถูกครอบไว้ด้วยไวยากรณ์ใหม่เท่านั้นเอง ภาษาที่ว่าคือ Lisp แล้วทำไมล่ะ ทำไมเราต้องตื่นกับมันตอนนี้ด้วย ทั้งที่มันผ่านมากว่า 60 ปีแล้ว At the beginning, Computers were really slow ไม่ว่าคุณจะเชื่อหรือไม่ แต่คอมพิวเตอร์ในตอนนั้นช้ากว่า DOM ในตอนนี้เสียอีก ซึ่งมี 2 แนวคิดหลักๆ ในการออกแบบและสร้างภาษาโปรแกรมขึ้นมานั่นคือ เริ่มจาก สถาปัตยกรรมของ Von Neumann แล้วใส่ Abstraction เข้าไป เริ่มจากคณิตศาสตร์ และนำ Abstraction ต่างๆ ออกไป คอมพิวเตอร์ในตอนนั้นไม่มีความสามารถในการประมวลผลมากพอที่จะประมวล...