Là một newbie trong các ngôn ngữ chức năng (tôi bắt đầu chạm vào Erlang một vài tuần trước - ngôn ngữ chức năng đầu tiên tôi có thể nhận được bàn tay của tôi trên).Lời khuyên về Học tập "Cách suy nghĩ về chức năng"?
Tôi bắt đầu viết một số thuật toán nhỏ (chẳng hạn như left_rotate_list
, bubble_sort,
merge_sort
v.v.). Tôi thấy mình thường bị lạc trong các quyết định như "tôi có nên sử dụng Danh sách trợ giúp để lưu trữ kết quả trung gian không?" và "tôi có nên tạo một hàm trợ giúp để làm điều này không?" Sau một thời gian, tôi thấy rằng lập trình chức năng (chịu với tôi nếu những gì tôi đang nói không có ý nghĩa gì cả) khuyến khích một "trên xuống" thiết kế: tức là, khi tôi làm merge_sort, trước tiên bạn viết xuống tất cả các hợp nhất các bước sắp xếp và đặt tên chúng là các hàm trợ giúp riêng lẻ; và sau đó bạn thực hiện các hàm trợ giúp đó từng cái một (và nếu bạn cần phân chia thêm các hàm trợ giúp đó, hãy thực hiện nó theo cùng cách tiếp cận).
Điều này dường như mâu thuẫn với thiết kế OO một chút, trong đó bạn có thể bắt đầu từ phía dưới để xây dựng cấu trúc dữ liệu cơ bản, sau đó lắp ráp cấu trúc dữ liệu và thuật toán vào những gì bạn muốn.
Cảm ơn nhận xét. Vâng, tôi muốn nhận được lời khuyên về cách "suy nghĩ trong ngôn ngữ chức năng" (giống như "suy nghĩ trong Java", "suy nghĩ trong C++").
Câu hỏi là gì? :-) – csl
Bạn muốn gợi ý cho "hướng dẫn lập trình chức năng cho các lập trình viên OOP?" – Mahin
Xin chào, hãy cập nhật câu hỏi. Cảm ơn bạn đã trả lời – chen