Tagged: Recursive

Functional Programming #5 : Filter-Map-Reduce 2

Functional Programming #5 : Filter-Map-Reduce

เกริ่นนำ Filter-Map-Reduce เป็นฟังก์ชันช่วยในการทำงานของ List เหมือนกับ sum หรือ take เป็นต้น แต่ที่แยกออกมาต่างหากนั้น เพราะสามตัวนี้ทำงานสอดประสานกันได้เป็นอย่างดี และมีความสามารถสูงมาก ว่ากันว่ามีฟังก์ชันเพียงสามตัวนี้ ก็สามารถทดแทนฟังก์ชันที่ช่วยจัดการเกี่ยวกับ List ได้เกือบทั้งหมด  ฟังก์ชันทั้งสามนี้เป็นฟังก์ชันมีระดับด้วยกันทั้งสิ้น ทำให้มีความยืดหยุ่นสูง เรามาลองดูรายละเอียดกันครับ ฟังก์ชัน filter ฟังก์ชัน filter นั้นรับพารามิเตอร์สองตัวครับ ตัวแรกเป็นเงื่อนไข และตัวที่สองเป็น List อารมณ์เดียวกันกับ takeWhile ครับ การทำงานก็ไม่มีอะไรซับซ้อนครับ ไล่ list แต่ละตัว more »

Functional Programming #4 : List Processing 0

Functional Programming #4 : List Processing

เกริ่นนำ FP มี List เป็นของคู่กันเห็นได้จากภาษาที่ถือว่าเป็นบิดาของ FP เลยคือ LISP นั้น เอาแค่ชื่อก็ชัดเจนแล้วครับ LISP นั้นย่อมาจากคำว่า List Processing ซึ่งก็แปลตรงตัวว่าการประมวลผล List นั่นเองดังนั้นการประมวลผล List จึงถือเป็นส่วนหลักส่วนหนึ่งของ FP ในเนื้อหาของบทนี้จึงพูดคุยเกี่ยวกันการสร้าง List ตลอดจนฟังก์ชันที่เป็นตัวช่วยการจัดการ List รวมถึงแสดงให้ถึงการสร้างฟังก์ชันเหล่านี้อย่างง่าย เพื่อเป็นการฝึกฝนและเสริมความเข้าใจ ว่าแต่ว่า List คืออะไร List คือโครงสร้างข้อมูลแบบหนึ่งถ้านึกอะไรไม่ออกให้ตั้งต้นที่ Array ก่อน Array more »

Functional Programming #3 : ฟังก์ชันมีระดับ 4

Functional Programming #3 : ฟังก์ชันมีระดับ

เกริ่นนำ ในบทความที่แล้วผมนำเสนอแนวคิดการเรียกตัวเองและฟังก์ชันพิสุทธิ์อันเป็นพื้นฐานของ FP ซึ่งในตอนท้าย ๆ ผมนำเสนอการเพิ่มศักยภาพของฟังก์ชัน โดยการทำฟังก์ชันซ้อนฟังก์ชัน แต่เท่านั้นยังไม่พอครับเพื่อให้ FP เป็นเครื่องมือที่ทรงประสิทธิภาพ เราจึงต้องเข้าไปในตู้โทรศัพท์เพื่อแปลงร่างฟังก์ชันทำให้พิสดารเปรียบเป็นซูเปอร์แมนคือเอากางเกงในสีแดงมาใส่ทับกางเกงนอกนั่นเอง ฟังก์ชันกลายเป็นพลเมืองชั้นหนึ่ง พลเมืองชั้นหนึ่ง (first class citizen) เป็นคำที่หมู่พลเมืองชั้นสองมักจะพูดถึง ซึ่งโดยทั่วไปแล้ว เมื่อคนที่ไปอยู่บ้านเมืองอื่น มักมีปัญหาไม่ได้รับสิทธิเท่าเทียมกับพลเมืองของเจ้าของประเทศ เช่นสิทธิในการรักษาพยาบาลเป็นต้น แล้วในแง่การเขียนโปรแกรมหละอะไรที่เรียกว่าพลเมืองชั้นหนึ่งหรือชั้นสอง เรื่องนี้ดูไม่ยากครับ ดูกันที่อะไรก็ตามถ้าสามารถกำหนดเป็นตัวแปรได้โดยตรงถือว่าเป็นชั้นหนึ่ง ถ้ากำหนดได้แต่โดยอ้อม ๆ หรืออาจไม่ได้เลย เราถือว่าเป็นชั้นสอง แต่ถ้ากำหนดเป็นตัวแปรไม่ได้เลย อันนี้ตีตั๋วชั้นสาม ใครมาก่อนได้ก่อน มาหลังต้องยืน อันนี้ล้อเล่นครับชั้นสามไม่มีนะครับ มีแค่สองชั้นถ้าท่านยังงงอยู่มันเกี่ยวอะไรกับการเขียนโปรแกรม more »

Functional Programming #2 : ฟังก์ชันพิสุทธิ์และการเรียกตัวเอง 2

Functional Programming #2 : ฟังก์ชันพิสุทธิ์และการเรียกตัวเอง

เกริ่นนำ บทนี้เราจะมาเรียนรู้ถึงนิยามของฟังก์ชันในมุมมองของ FP กัน แนวคิดของการสร้างฟังก์ชันพิสุทธิ์ (Pure Function) กลไกฟังก์ชันการเรียกตัวเอง (Recursive Function) รวมถึงการปรับปรุงประสิทธิภาพการเรียกตัวเองอีกด้วย ก่อนจะเข้าเนื้อหา ผมขอปรับความเข้าใจให้ตรงกันสองประการก่อนครับ ข้อแรกเรื่องการแปลศัพท์ทางเทคนิคจากภาษาอังกฤษมาเป็นภาษาไทย ผมจะยึดตามราชบัณฑิตเฉพาะคำที่รู้จักกันอย่างแพร่หลายแล้วเท่านั้น นอกนั้นผมขอบัญญัติคำขึ้นมาเอง เอาให้รื่นหูโดยมีแม่แบบมาจากท่าน ว.ณ เมืองลุง ผู้เขียนหนังสือกำลังภายในจีนที่ผมชอบมาก อย่างฟังก์ชันพิสุทธิ์ นี่ผมก็ตั้งเองนะครับ ตั้งชื่อเอาไว้เพื่อสื่อความเข้าใจเท่านั้น กรุณาอย่านำเอาไปใช้ต่อนะครับ ส่วนเรื่องที่สองเป็นเรื่องที่ผมทำใจค่อนข้างลำบาก แต่ก็ต้องตัดสินใจ คือการอธิบายเรื่อง FP นั้น จำเป็นต้องใช้เลือกใช้ภาษาใดภาษาหนึ่งมาเป็นตัวขับเคลื่อน ถ้าตามใจคนใช้ Python C# Java more »