Как на Nemerle определить структуру данных типа лисповского списка?
(1(2, 3, (4, 5)), 6, 7, (8, 8, 10), (11, 12)) или иными словами дерево произвольной ветвистости.
Здравствуйте, Ka3a4oK, Вы писали:
KK>Как на Nemerle определить структуру данных типа лисповского списка? KK>(1(2, 3, (4, 5)), 6, 7, (8, 8, 10), (11, 12)) или иными словами дерево произвольной ветвистости.
Здравствуйте, Ka3a4oK, Вы писали:
KK>Как на Nemerle определить структуру данных типа лисповского списка? KK>(1(2, 3, (4, 5)), 6, 7, (8, 8, 10), (11, 12)) или иными словами дерево произвольной ветвистости.
Можно даже так:
def lst = [1, [2, [3, 4], 5], 6, 7, [8, 8, 10], [11, 12] : object];
Правда работает такой способ не всегда (иногда приходится к последнему элементу списков приписывать уточнение : object, чтобы компилятор не ругался на то, что в списке элементы разных типов.
Здравствуйте, catbert, Вы писали:
C>Здравствуйте, Ka3a4oK, Вы писали:
KK>>Как на Nemerle определить структуру данных типа лисповского списка? KK>>(1(2, 3, (4, 5)), 6, 7, (8, 8, 10), (11, 12)) или иными словами дерево произвольной ветвистости.
C>Можно даже так: C>def lst = [1, [2, [3, 4], 5], 6, 7, [8, 8, 10], [11, 12] : object];
C>Правда работает такой способ не всегда (иногда приходится к последнему элементу списков приписывать уточнение : object, чтобы компилятор не ругался на то, что в списке элементы разных типов.
ИМХО если Вы пытаетесь хранить в списке object'ы, у вас что-то не так с этим list
Можно, конечно. Но довольно бессмысленно, так как язык статически типизированный, а это решение чисто динамичекое. Код разгребающий эти списки будет неуклюжим и медленным (относительно типизированного аналога).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.