Tôi biết rằng gập trái tạo ra cây nghiêng trái và gập phải tạo ra cây nghiêng phải, nhưng khi tôi với đến một nếp gấp, đôi khi tôi thấy mình bị sa lầy vào những suy nghĩ đau đầu khi cố gắng xác định loại nếp gấp nào là thích hợp. Tôi thường kết thúc việc giải nén toàn bộ vấn đề và chuyển qua việc triển khai hàm gập vì nó áp dụng cho vấn đề của tôi.
Vì vậy, những gì tôi muốn biết là:
- Một số quy tắc ngón tay cái để xác định nên gấp trái hay gấp phải?
- Làm cách nào để tôi có thể nhanh chóng quyết định loại nếp gấp nào sẽ sử dụng với vấn đề tôi đang gặp phải?
Có một ví dụ trong Scala by Example (PDF) về việc sử dụng một nếp gấp để viết một hàm được gọi là flatten để nối danh sách các danh sách phần tử thành một danh sách duy nhất. Trong trường hợp đó, một nếp gấp đúng là lựa chọn thích hợp (dựa trên cách các danh sách được nối với nhau), nhưng tôi đã phải suy nghĩ về nó một chút để đi đến kết luận đó.
Vì gấp là một hành động phổ biến trong lập trình (chức năng), tôi muốn có thể đưa ra những quyết định kiểu này một cách nhanh chóng và tự tin. Vậy ... bất kỳ lời khuyên?