การระบุ pure function
pure function มีคุณสมบัติสองประการ:
- ผลลัพธ์ขึ้นอยู่กับ input เท่านั้น กล่าวคือ เมื่อส่งค่าเดิมเข้าไป ผลลัพธ์จะเหมือนเดิมทุกครั้ง
- ไม่มี side-effect นั่นคือ ไม่มีผลกระทบใดๆ ที่เกิดขึ้นภายนอกฟังก์ชัน
ฟังก์ชันจำนวนมากใน R ไม่ใช่ pure function แต่ก็ยังจำเป็นสำหรับการใช้งาน R ในชีวิตประจำวัน เช่น การดาวน์โหลดไฟล์ การสร้างกราฟ หรือการบันทึกผลลัพธ์
ในการเขียนโปรแกรม ควรพยายามทำให้ฟังก์ชันของคุณเป็น pure ให้มากที่สุด หรือไม่ก็เป็น impure อย่างชัดเจน (เช่น ฟังก์ชันที่ดาวน์โหลดไฟล์ควรทำหน้าที่นั้นเพียงอย่างเดียว) แต่ก่อนอื่น ต้องสามารถแยกแยะระหว่าง pure function กับ impure function ได้เสียก่อน
นั่นคือสิ่งที่จะฝึกในแบบฝึกหัดนี้ โดยจะรันฟังก์ชันทั้งสองประเภทแล้วสังเกตผลลัพธ์ที่ได้
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Functional Programming ระดับกลางด้วย purrr
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Launch Sys.time(), Sys.sleep(1), & Sys.time()
___()
___(___)
___()