В ответ на ответ Хаммара: его подход довольно легко распространить на более высокие измерения:
у создать векторное пространство из базисной пары, которая выглядит примерно так:
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] и т. д. Есть ли более чистый способ сделать это?