Sự khác biệt giữa lập trình quan hệ chức năng và lập trình chức năng là gì?


8

Sau khi đọc cả chủ đề nàybài báo được liên kết , tôi không hiểu FRP (lập trình quan hệ chức năng) khác với lập trình chức năng (FP) như thế nào.

FRP tăng cường hoặc thay thế FP? FRP có thể được thực hiện như một thư viện bằng ngôn ngữ FP không?

Câu trả lời:


8

Lập trình quan hệ chức năng dường như, đúng như tên gọi, là sự pha trộn của cả lập trình chức năng và mô hình quan hệ. Tôi nghĩ rằng câu này tổng hợp khá nhiều (trang 42):

Trong FRP, tất cả các trạng thái thiết yếu có dạng quan hệ và logic thiết yếu được thể hiện bằng cách sử dụng đại số quan hệ được mở rộng với các hàm do người dùng xác định (thuần túy).

Lập trình hàm loại bỏ trạng thái khỏi phương trình và chỉ xử lý các hàm thuần túy (không có tác dụng phụ). Điều này được cho là làm cho mọi thứ dễ dàng hơn với mọi người bằng cách ngăn chặn thao tác dữ liệu bị ẩn do đó làm cho lý do dễ dàng hơn về chương trình. FP là một lý tưởng đẹp nhưng trong ứng dụng thực tế, trạng thái là cần thiết và thường hữu ích. Tất nhiên có thể có trạng thái trong FP, nó chỉ cần tham gia nhiều hơn một chút.

Dựa trên cái nhìn nhanh vào tờ giấy, có vẻ như họ đang cố gắng đơn giản hóa FP bằng cách cho phép nhà nước kiểm soát chặt chẽ. Dữ liệu quan hệ được cấu trúc tốt và dễ lý luận và các chương trình chức năng rất dễ lý luận (có thể không phải theo ý nghĩa của con người bạn), vì vậy, hãy tăng cường FP với R và làm cho cuộc sống yêu thương của mọi người trở nên dễ dàng hơn.


Cảm ơn vì sự trả lời. Âm thanh giống như tôi mong đợi - không thực sự khác biệt so với FP. Điều tôi không thể hiểu là tại sao nhiều người thực hiện các công cụ FRP của riêng họ, thay vì chỉ mở rộng một ngôn ngữ FP.

@MattFenwick Bạn có chắc là bạn có "R" đúng không? Ngoài ra còn có Lập trình phản ứng chức năng , thường được viết tắt là FRP, và cũng là một chuyên ngành của FP, nhưng hoàn toàn không liên quan đến đại số quan hệ. Có rất nhiều triển khai P (eactive) P độc lập / chuyên biệt, nhưng tôi chưa bao giờ nghe nói về FR (elative) P trước đây.
Ngọn lửa của Ptharien

@flame vâng, tôi chắc chắn. Xem giấy liên kết để biết thêm chi tiết.

Một ngôn ngữ rất thú vị để xem là Opa - một ngôn ngữ chức năng cung cấp trạng thái có thể thay đổi được ràng buộc với các bản ghi cơ sở dữ liệu (quan hệ hoặc tài liệu), cú pháp truy vấn trực tiếp và hệ thống loại cực kỳ mạnh mẽ. Nó không phải là một ngôn ngữ quan hệ chức năng mỗi se, nhưng nó có thể là một ngôn ngữ phù hợp để thực hiện ý tưởng về lập trình quan hệ chức năng. (đừng bị lừa bởi cách nó được gắn nhãn là "khung JavaScript" - nó là một ngôn ngữ được biên dịch và độc đáo không giống với bất kỳ thứ gì khác mà tôi đã thấy.)
mindplay.dk

PS: cảm ơn bạn @axblount, đây là một câu trả lời hoàn toàn đẹp!
mindplay.dk
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.