По-перше, справжній світ Хаскелл , який я читаю, говорить, що ніколи не використовувати, foldl
а замість цього використовувати foldl'
. Тож я їй довіряю.
Але я туманно, коли використовувати foldr
проти foldl'
. Хоча я бачу структуру того, як вони працюють по-різному, викладену переді мною, я занадто дурний, щоб зрозуміти, коли "що краще". Я думаю, мені здається, що насправді не має значення, який використовується, оскільки вони обидва дають однакову відповідь (чи не так?). Насправді, мій попередній досвід роботи з цією конструкцією походить від Ruby's inject
і Clojure reduce
, які, схоже, не мають "лівої" та "правої" версій. (Побічне запитання: яку версію вони використовують?)
Будемо дуже вдячні за будь-яке розуміння, яке може допомогти розумним завданням, як я!