Functional Programming ระดับกลางด้วย purrr
Colin Fay
Data Scientist & R Hacker at ThinkR
"เพื่อทำความเข้าใจการคำนวณใน R มีหลักสองข้อที่ช่วยได้:
- ทุกสิ่งที่มีอยู่คือออบเจกต์
- ทุกสิ่งที่เกิดขึ้นคือการเรียกฟังก์ชัน" -John Chambers
class(`+`)
"function"
class(`<-`)
"function"
ฟังก์ชันสามารถ
จัดการได้
เก็บในตัวแปร
เป็น lambda
เก็บในลิสต์
เป็นอาร์กิวเมนต์ของฟังก์ชัน
ส่งคืนจากฟังก์ชัน
ใน pure function:
ผลลัพธ์ขึ้นอยู่กับ input เท่านั้น
ไม่มี "side-effect"
# Output depends only on inputs
# No side effect
sum(1:10)
55
mean(1:100)
50.5
Impure functions:
ขึ้นอยู่กับ environment
มี "side-effects"
# Outputs depends of environment
Sys.Date()
"2018-10-04"
# Side effect only
write.csv(iris, "iris.csv")
Functional Programming ระดับกลางด้วย purrr