новый тип данных списка - PullRequest
       7

новый тип данных списка

2 голосов
/ 16 декабря 2010

как я могу определить новый тип данных в ML, давайте предположим, что newList может состоять из списков элементов 'a (int, real и т. Д.), Например, вложенных списков: если мой тип' a равен intзначения могут быть: [1], [1, [4]], [1, [5], [[5]]] и т. д. Заранее благодарим за любую помощь* извините без 1 в примере, разные списки int, я удалил его

Ответы [ 2 ]

1 голос
/ 17 декабря 2010
datatype 'a multiList = E of 'a
                      | List of 'a multiList list

Ваши примеры будут:

List [E 1]

List [E 1, List [E 4]]

List [E 1, List [E 5], List [List [E 5]]]
1 голос
/ 16 декабря 2010

Вы не можете. Все элементы в списке должны быть одного типа. В вашем примере некоторые элементы имеют тип int, а некоторые - int list.

Вы можете создать что-то похожее на это дерево, но синтаксис использовать не так:

datatype 'a multiList = Empty
                      | List of 'a multiList list
                      | E of 'a;

val x = List [E 1, List [E 1, List [E 4]], List [E 1, List [E 5]]];
...