Trong một ngôn ngữ lập trình chức năng đủ mạnh (ví dụ, với các kiểu dữ liệu để thực hiện các bao đóng ), bạn có thể loại bỏ tất cả các cách sử dụng bậc cao hơn bằng cách chuyển đổi hàm khử . Vì phương pháp này được sử dụng để biên dịch loại ngôn ngữ này, nên bạn có thể giả định một cách hợp lý rằng điều này không ảnh hưởng đến hiệu suất và trong cài đặt này, thứ tự cao hơn không làm cho ngôn ngữ trở nên kém mạnh mẽ hơn. Tuy nhiên, nó ảnh hưởng đến cách viết mã.
Tuy nhiên, nếu ngôn ngữ không đủ mạnh, thì có, thứ tự cao hơn sẽ cung cấp sức mạnh biểu cảm. Hãy xem xét phép tính lambda: không có bất kỳ hàm bậc cao nào, nó thực sự không thể làm gì được, chủ yếu là vì các kiểu dữ liệu cơ bản nhất (số nguyên, booleans) được triển khai bằng các hàm.
Tóm lại, nó thực sự phụ thuộc vào ngôn ngữ.
Trên đây là câu trả lời của tôi. Dưới đây, một nhận xét về một giả định thông thường về các ngôn ngữ bắt buộc.
về một thuật toán trên một ngôn ngữ lập trình chức năng không lười biếng có phức tạp, trong khi cùng một thuật toán trong lập trình bắt buộc là Ω ( n ) . Thêm lazyness với ngôn ngữ FP sẽ làm cho thuật toán Ω ( n ) .Ω ( nhật ký nn )Ω ( n)Ω ( n )
Tôi muốn xem tài liệu tham khảo này. Giả định thông thường là việc truy cập vào một mảng có độ dài trong RAM nằm trong thời gian O ( 1 ) và tương đương trong FP thuần túy là trong thời gian O ( log n ) . Điều đó không hoàn toàn đúng: thời gian truy cập trong RAM nằm ở O ( log m ) trong đó m là kích thước của bộ nhớ. Tất nhiên, m ≥ n . Trong thực tế truy cập một phần tử của một mảng nhanh hơn nhiều. Một lý do sẽ là m bị ràng buộc nhưng ... n cũng vậy !nÔ ( 1 )O ( nhật kýn )O ( nhật kým )mm ≥ nmn
EDIT: cảm ơn bạn đã liên kết (liên kết cho bài viết về sự lười biếng không có sẵn, đây là một liên kết khác ). Như đã đăng trong các bình luận và ở trên trong câu trả lời của tôi, mô hình RAM hơi không công bằng đối với FP thuần túy bằng cách cung cấp các tra cứu thời gian ngay cả khi kích thước của một địa chỉ không bị giới hạn. Tôi vẫn chưa hiểu làm thế nào trò lừa bịp hoạt động nhưng tôi nghĩ điều quan trọng cần lưu ý là điều này chỉ dành cho vấn đề đặc biệt này.Ô ( 1 )