Я начал изучать Haskell, и я есть проблемы с пониманием, как декартово произведение списков в списке работдоперли как декартово реализация продукта на Haskell работы
здесь предполагаемый код
cprod = foldr f [[ ]]
where f xs yss = foldr g [ ] xs
where g x zss = foldr h zss yss
where h ys uss = (x : ys) : uss
Что именно я не получаю это последняя функцию я заменил имена переменных, как я понимаю
mycart = foldr f [[]]
where f currentresult listelem = foldr g [] currentresult
where g currentresultonstep currentresultelem = foldr h currentresultelem listelem
where h currentresultelemonstep onelistelem = (currentresultonstep:currentreslteleemonstep):onelistelem
не должна быть последняя строки что-то вроде этого?
where h currentresultelemonstep onelistelem = (onelistelem:currentresultelemonstep):currentresultonstep
, как мы стараемся, чтобы добавить элементы списка в начале на элементы текущего результата ?
когда я пишу 'где f x y', для foldr, y - это аккумулятор? – Herokiller
Да, и x - текущий элемент. – melpomene
ах, как получилось, я подумал, что первый параметр - это аккумулятор, спасибо – Herokiller