ฟังก์ชั่นการสั่งซื้อที่สูงขึ้นนั้นให้พลังกับการเขียนโปรแกรมฟังก์ชั่นมากกว่าหรือไม่?


13

ผมเคยถามคำถามที่คล้ายกันใน cstheory.SE

ตามคำตอบเกี่ยวกับเรื่องนี้ Stackoverflowมีขั้นตอนวิธีว่าในวันที่ไม่ได้ขี้เกียจบริสุทธิ์ภาษาเขียนโปรแกรมการทำงานมีความซับซ้อนในขณะที่วิธีเดียวกันในการเขียนโปรแกรมที่จำเป็นคือΩ ( n ) เพิ่ม lazyness ภาษา FP จะทำให้ขั้นตอนวิธีΩ ( n )Ω(nlogn)Ω(n)Ω(n)

มีความสัมพันธ์ที่เท่าเทียมกันเปรียบเทียบภาษา FP กับและไม่มีฟังก์ชั่นการสั่งซื้อที่สูงขึ้นหรือไม่ ทัวริงยังสมบูรณ์อยู่หรือไม่? ถ้าเป็นเช่นนั้นการขาดลำดับที่สูงขึ้นของ FP จะทำให้ภาษามีประสิทธิภาพน้อยลงหรือมีประสิทธิภาพหรือไม่


ซึ่งภาษา FP?
reinierpost

ฟังก์ชั่นการสั่งซื้อที่สูงขึ้นและการประเมินผลที่ขี้เกียจนั้นไม่เหมือนกันเลย แล้วคำถามของคุณเกี่ยวกับอะไร?
กราฟิลส์

คำตอบ:


11

ในภาษาการเขียนโปรแกรมการทำงานที่เพียงพอที่มีประสิทธิภาพ (เช่นกับชนิดข้อมูลในการดำเนินการปิด ) คุณสามารถกำจัดการใช้งานทั้งหมดของการสั่งซื้อที่สูงขึ้นโดยการเปลี่ยนแปลงของdefunctionalization เนื่องจากวิธีการนี้ใช้ในการรวบรวมภาษาประเภทนี้คุณสามารถสันนิษฐานได้ว่าสิ่งนี้ไม่ส่งผลกระทบต่อการแสดงและในการตั้งค่าที่สูงกว่านี้จะไม่ทำให้ภาษามีประสิทธิภาพน้อยลง อย่างไรก็ตามมันจะส่งผลกระทบต่อวิธีการเขียนรหัส

อย่างไรก็ตามหากภาษานั้นไม่ทรงพลังเพียงพอดังนั้นคำสั่งที่สูงกว่าจะให้พลังในการแสดงออก พิจารณาแลมบ์ดาแคลคูลัส: หากไม่มีฟังก์ชั่นลำดับสูงกว่ามันไม่สามารถทำอะไรได้เลยส่วนใหญ่เป็นเพราะชนิดข้อมูลพื้นฐานที่สุด (จำนวนเต็ม, บูลีน) ถูกนำมาใช้โดยใช้ฟังก์ชั่น

สรุปแล้วมันขึ้นอยู่กับภาษา


ด้านบนคือคำตอบของฉัน ด้านล่างมีความคิดเห็นเกี่ยวกับการสันนิษฐานตามปกติเกี่ยวกับภาษาที่จำเป็น

Ω(nlogn)Ω(n)Ω(n)

nO(1)O(logn)O(logm)mmnmn

O(1)


4

มันขึ้นอยู่กับสิ่งที่คุณหมายถึงโดยการแสดงออก

นี่คือข้อโต้แย้งที่สูงขึ้นเพื่อทำบางสิ่งที่เพิ่ม: กับภาษาแรกที่สั่งซื้อ recursion ดั้งเดิมไม่เพียงพอที่จะแสดงฟังก์ชั่น Ackermann อย่างไรก็ตามในการปรากฏตัวของฟังก์ชั่นที่สูงกว่าการเรียกซ้ำแบบดั้งเดิมก็เพียงพอแล้ว:

Ackermann 0=λx.x+1Ackermann (m+1)=Iter (Ackermann m)Iter f 0=f 1Iter f (n+1)=f (Iter f n)

สิ่งนี้นิยามฟังก์ชัน Ackermann โดยใช้การเรียกซ้ำแบบดั้งเดิมเท่านั้น

IterIterNkNkIter(NN)(NN)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.