W kursie internetowym stwierdzono, że foldLeft
i foldRight
są równoważne dla operatorów, którzy są asocjacyjny i przemienny.Czy foldRight jest odpowiednikiem foldLeft, biorąc pod uwagę nieprzyswajalną operację asocjacyjną?
Jeden z uczniów jest nieugięty, że tacy operatorzy muszą być jedynie stowarzyszeni. Tak więc ta właściwość powinna być prawdziwa dla operacji takich jak skład funkcji i mnożenie macierzy.
ile można powiedzieć asocjacyjny operacji, które nie są przemienne nie będą równoważne wyniki dla foldLeft
i foldRight
chyba z
jest obojętny, a operacja jest gromadzona w taki sposób, że kolejność argumentów pozostaje nienaruszone. IMO operacja musi być przemienna w przypadku ogólnym.
list.foldLeft(z)(operation) == list.foldRight(z)(operation)
Więc dla foldLeft
i foldRight
za równoważne powinny operation
być jednocześnie asocjacyjne i przemienne, czy jest to wystarczające dla operation
być asocjacyjne?
Dobry połów. Odwoła się do konkatenacji ciągów @ jwvh. – Tim