มารู้จัก Point Free Style กันเถอะ

Pointfree Style หรืออีกชื่อนึงคือ Tacit Programming เป็นหลักการเขียน Function ขึ้นมา หนึ่ง Function โดยที่ Function นั้น ไม่รับ argument ใดๆเลย

ตัวอย่างเช่น

const equalWith = a => b => a === b
// point free style
const equalWithTen = equalWith(10) 
// equalWith = 10 => b => 10 === b
// b => 10 === b
equalWithTen(10) // true
equalWithTen(5) // false

มาอธิบายฟังก์ชันแต่ละบรรทัดกันดีกว่าเริ่มจาก ตัวแรก

ฟังก์ชัน equalWith จะรับอะไรสักตัวเข้ามา(a) แล้วคาย function ฟังก์ชันใหม่มาซึ่งก็คือ

b => a === b 

โดยต่อมาเนี่ย equalWithTen ก็จะเอา equalWith มาใช้ โดยส่ง ค่า 10 เข้าไป(a ไง) ดังนั้นจะได้ ฟังก์ชันที่คายออกมาคือ

b => 10 === b

เมื่อเราเอาฟังก์ชัน equalWithTen มาเรียกใช้ โดยใส่ paramter เข้าไป(b ไง) ดังนั้นแล้ว ก็จะเป็น

equalWithTen(10)
10 => 10 === 10 // true
equalWithTen(5)
5 => 10 === 5 // false

ซึ่งไอ equalWithTen นี่แหละครับ ก็คือการเขียนแบบ pointfree style

ยากจังเลย แล้วจะเขียนไปทำไม

แต่ !!

มี library บางตัว ที่ใช้หลัก pointfree ในการ implement ขึ้นมา อย่างเช่น lodash/fp , ramdajs เหยดดด….

คราวหน้าเรามาพบวิธีการใช้ ramdaJS ในแบบ pointfree style กันจ้ะ สวัสดี :D

Like what you read? Give Thirawut Pharamit a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.