คุณโปรแกรมในมัน! ลองดูที่การเข้ารหัสคริสตจักร คุณสามารถดูว่าการคำนวณทางคณิตศาสตร์ทั้งหมดนั้นน่าจะทำให้คุณมั่นใจได้อย่างไรว่ามันมีประสิทธิภาพมาก ฉันชอบที่จะดูการดำเนินงานในรายการอย่างไรก็ตาม คุณสามารถกำหนดโครงสร้างข้อมูลส่วนใหญ่ในแง่ของฟังก์ชั่นที่จะดำเนินการที่สำคัญที่สุด
ตัวอย่างเช่นการเข้ารหัสของรายการเป็นฟังก์ชั่นพับที่พับมากกว่า โปรดทราบว่านี่ไม่ใช่การเข้ารหัสของคริสตจักร แต่สิ่งหนึ่งที่ฉันได้รับจากประเภทของ Percie และภาษาการเขียนโปรแกรม การเข้ารหัสคู่ของคริสตจักรไม่ได้ให้เราเรียกซ้ำเราต้องเพิ่มมันกลับเข้าไปในตัวเราด้วย combinator การเรียกซ้ำ
ดังนั้นรายการจึงต้องมีสองข้อโต้แย้งฟังก์ชั่นในการทำ fold และค่าเริ่มต้นที่จะเสียบเข้ากับ fold ในบางจุด
cons x xs = lam f. lam a. f x (xs f a)
nil = lam f. lam a. a
ตอนนี้เราสามารถกำหนดผลรวมที่ได้รับเพิ่มฟังก์ชั่น (ดูการเข้ารหัสคริสตจักรจากด้านบน)
sum xs = xs add 0
เราสามารถทำอะไรได้มากกว่าและกำหนดฟังก์ชั่นแผนที่
consApply f x xs = cons (f x) xs
map f xs = xs (consApply f) nil
ถ้าคุณยังคงไม่มั่นใจว่ามีการคำนวณเกิดขึ้นที่นี่และต้องการที่จะให้แน่ใจว่าคุณสามารถดำเนินการใด ๆ การคำนวณแล้วตรวจสอบCombinator จุดคงที่ มันทำให้ฉันปวดหัวเล็กน้อย แต่บางครั้งฉันก็ไม่แน่ใจว่าฉันจะเรียกมันว่าสัญชาตญาณ แต่ถ้าคุณประเมินมันด้วยตัวเองด้วยข้อโต้แย้งบางอย่างคุณจะเห็นว่าเกิดอะไรขึ้น