Я пытаюсь представить график с использованием несвязанного объединения и записи. Следующий код вызывает синтаксическую ошибку. Как определить две переменные, когда они ссылаются друг на друга?
type 'a vertex =
|Empty
|Vertex of 'a * 'a list;; (*a tuple consisting of any type of element and a list of vertex*);
let v0 = Vertex(0,[v1]) in
let v1=Vertex(1,[v0]);;
Если я исправлю код в:
let rec v0 = Vertex(0,[v1]) and v1=Vertex(1,[v0]);;
Я получу v0:
[Vertex (1,
[Vertex (0,
[Vertex (1,
[Vertex (0,
[Vertex (1,
[Vertex (0,
[Vertex (1,
[Vertex (0,
[Vertex (1,
[Vertex (0,
[Vertex (1,
[Vertex (0,
[Vertex (1,
[Vertex (0,
[Vertex (1,
[Vertex (0,
[Vertex (1,
[Vertex (0,
[Vertex (1,
[Vertex (0,
[Vertex (1,
[Vertex (0,
[Vertex (1,
[Vertex (0,
[Vertex (1,
[Vertex (0,
[Vertex (1,
[Vertex (0,
[Vertex (1,
[Vertex (0,
[Vertex (1,
[Vertex (0,
[Vertex (1,
[Vertex (0,
[Vertex
(1,
[Vertex
(0,
[Vertex
(1,
[Vertex
(0,
[Vertex
(1,
[Vertex
(0,
[Vertex
(1,
[Vertex
(0,
[Vertex
(1,
[Vertex
(0,
[Vertex
(1,
[Vertex
(0,
[Vertex
(1,
[Vertex
(0,
[Vertex
(1,
[Vertex
(0,
[...])])])])])])])])])])])])])])])])])])])])])])])])])])])])])])])])])])])])])])])])])])])])])])])])])])]
Это кажется не тем, что я хочу ...
Каков лучший способ определить запись графа, содержащую список или массив вершин? Очевидно, я не могу сделать это:
type graph = {
vertex_set:array};;
Я получаю следующее сообщение:
Error: The type constructor array expects 1 argument(s),
but is here applied to 0 argument(s)