Я хотел бы сделать способ, в котором я мог бы дать ему список длин, и он вернет все комбинации декартовых координат до тех длин. Проще объяснить на примере:Вложенные декартовы произведения списков Haskell
cart [2,5]
Prelude> [ [0,0],[0,1],[0,2],[0,3],[0,4],[1,0],[1,1],[1,2],[1,3],[1,4] ]
cart [2,2,2]
Prelude> [ [0,0,0],[0,0,1],[0,1,0],[0,1,1],[1,0,0],[1,0,1],[1,1,0],[1,1,1] ]
Простой список понимание не будет работать, потому что я не знаю, как долго списки будут. Хотя я люблю простоту Хаскелла для многих проблем, это то, что я могу написать процедурно (на С или что-то) за 5 минут, тогда как Хаскелл дает мне аневризму!
Решение этой конкретной проблемы поможет мне многое; Я также хотел бы услышать о ваших мысленных процессах при решении таких вещей.
Ничего себе, спасибо Кенни и Дейву. Я никогда не думал бросать рекурсивный вызов в определение понимания списка - очень круто. Версия, использующая карту и складку, великолепна. Я пытаюсь использовать функции более высокого порядка, когда могу придумать способ, поэтому это отличный пример для изучения! – cspyr0
пока вы используете функции более высокого порядка, знайте, что это не должно быть загадочным. и, используя правильные функции, помогите добраться туда, «последовательность» - это то, что вам нужно здесь. – yairchu
Спасибо yairchu за краткое и понятное решение и за то, что вы познакомили меня с hoogle. Как я ничего не сделал без этого ?! – cspyr0