, насколько я понимаю, в takeWhile
условие относится к элементам списка, а не к их числу
Да! За исключением, может быть, возможно, мы могли бы каким-то образом заставить каждый элемент отражать количество своих предыдущих элементов в списке, то есть его index в списке.
Таким образом, нам нужно преобразовать наш аргумент список
[ <b>a</b>, <b>b</b>, <b>c</b>, .... ]
в новый, модифицированный, содержащий расширенную информацию в своих элементах, например,
[(<b>a</b>, <i>what?</i>), (<b>b</b>, <i>goes?</i>), (<b>c</b>, <i>here?</i>), .... ]
и затем ремесло какой-то предикат для этих пар делать то, что мы хотим; затем восстановите исходные элементы из пар, следуя парадигме decorate - transform - undecorate .
Если вы не знакомы со встроенными функциями более высокого порядка, которые могут sh эти задачи, вы можете сами их кодировать с помощью рекурсии. Или используйте списочные представления.