В ответ на ответ Хаммара: его подход довольно легко распространить на более высокие измерения:

у создать векторное пространство из базисной пары, которая выглядит примерно так:

genFromPair (e1, e2) = [x*e1 + y*e2 | x <- [0..], y <- [0..]]

Когда я проверяю вывод, он выглядит так, как будто я получаю[0, e2, 2*e2,...] (Т.е.x никогда не становится выше 0). Какой вид имеет смысл, когда я думаю о том, как написать код для понимания этого списка.

Я написал некоторый код, чтобы взять расширяющиеся «оболочки» от источника (сначала целые с нормой 0, затем с нормой 1, затем нормой 2 ...), но это немного раздражает и специфично для Z ^ 2 - я бы переписать его для Z ^ 3 или Z [i] и т. д. Есть ли более чистый способ сделать это?

Ответы на вопрос(4)

Ваш ответ на вопрос