Я усвідомлюю, що складка ліворуч створює лівосторонні дерева, а складчаста права створює дерева, що схиляються вправо, але коли я добираюсь до складки, я іноді потрапляю в занурення в думці, що викликає головний біль, намагаючись визначити, який тип складки підходить. Зазвичай я закінчую розгортання всієї проблеми та крокую через реалізацію функції складання, як це стосується моєї проблеми.
Отже, що я хочу знати:
- Назвіть кілька основних правил для визначення того, чи потрібно складати ліворуч чи згинати праворуч?
- Як я можу швидко визначити, який тип складки використовувати, враховуючи проблему, з якою я стикаюся?
У Scala за прикладом (PDF) є приклад використання складання для написання функції під назвою flatten, яка об'єднує список списків елементів у єдиний список. У цьому випадку правильний вибір - правильний вибір (враховуючи спосіб з’єднання списків), але мені довелося трохи подумати над цим, щоб дійти цього висновку.
Оскільки складання - це така поширена дія у (функціональному) програмуванні, я хотів би мати можливість приймати подібні рішення швидко та впевнено. Отже ... якісь поради?