Играйте на клавиатуре.
-- movement 1. the theme.
take 1 [1,1 ..] == [1]
take 2 [1,1 ..] == [1,1]
take 3 [1,1 ..] == [1,1,1]
-- movement 2. development.
[1 | i <- [1]] == [1]
[1 | i <- [1,1]] == [1,1]
[1 | i <- [1,1,1]] == [1,1,1]
-- movement 3. counterpoint.
take 1 [1,2 ..] == [1]
take 2 [1,2 ..] == [1,2]
take 3 [1,2 ..] == [1,2,3]
-- movement 4. coda.
[1 | i <- [1]] == [1]
[1 | i <- [1,2]] == [1,1]
[1 | i <- [1,2,3]] == [1,1,1]
Er go,
[1 | i <- take n [1,2 ..]] == [1, .... -- or 'a' etc. instead of 1
[ [1 | i <- take n [1,2 ..]]
| i <- take n [1,2 ..] ] == [[1, .... -- or 'a' etc. instead of 1
Здесь счетная задача и выходная информация разделены. Проблема с вашей функцией заключалась в том, что вы использовали свой выходной элемент как для подсчета, так и для вывода. Но вы действительно должны считать только с Integer
с.
take n [1,2 ..]
также можно записать как [1,2..n]
или просто [1..n]
.