ฉันคิดว่าสิ่งหนึ่งที่คุณอาจพบเจอคือสิ่งที่ฉันได้พบเมื่อเรียนรู้การเขียนโปรแกรมฟังก์ชั่นซึ่งก็คือด้วยการเขียนโปรแกรมที่ใช้งานได้คุณ (และเกือบจะต้อง) คิด / ทำงานในระดับที่สูงกว่าการเขียนโปรแกรมที่จำเป็น
สิ่งที่คุณพบว่าแสดงออกน้อยกว่าฉันคิดว่าจริง ๆ แล้วแสดงออกได้มากกว่า : คุณไม่ต้องสะกดทุกรายละเอียดเล็ก ๆ น้อย ๆ และสามารถทำได้มากขึ้นโดยใช้รหัสน้อยลงในการเขียนโปรแกรมเชิงการทำงาน - มีพลังมากกว่าสิ่งที่คุณเขียน
ตัวอย่างเช่นฉันสามารถเขียนได้อย่างไม่แน่นอน:
for each (Person person in people)
print(person.name)
ซึ่งอ่านได้อย่างสมบูรณ์ว่าเป็นภาษาอังกฤษ
รุ่น Haskell อาจเป็น (และนี่ไม่ใช่ Haskell ที่ถูกต้อง แต่ใช้สำหรับการเปรียบเทียบทางไวยากรณ์):
map (print . name) people
ซึ่งต้องใช้รหัสน้อยลงและการถกเถียงรายละเอียดน้อยลง - ฉันไม่จำเป็นต้องแยกสิ่งต่าง ๆ ออกเป็นลูปและตัวแปร (s) ( for each (...)
) map
ฟังก์ชันจะดูแลสิ่งนั้นให้ฉัน
การทำงานในระดับนั้นอาจทำให้คุณคุ้นเคย ถ้าช่วยได้ Haskell อาจเป็นเวลาที่ยากลำบากที่สุดที่ฉันได้เรียนรู้ภาษาใหม่ตั้งแต่ฉันเริ่มเขียนโปรแกรมและฉันรู้ว่า> 10 ภาษา (รวมถึง Lisp) มันคุ้มค่าที่จะเรียนรู้