Добавление пользовательских типов в массив - PullRequest
2 голосов
/ 09 сентября 2011

Я определил тип с именем node вместе со списком узлов.

type node = {name: string; description: string}
nodes = [] : list(node)

Я создал функцию с именем createNewNode(), которая создает новый узел, назначает его для selectedNode и добавляет его вузлы массива.

line 19: createNewNode() =
line 20:   selectedNode = {name="" remoteFSRoot=""} : node
line 21:   nodes = [nodes | selectedNode]
  ...

Когда я компилирую это, я получаю следующую ошибку:

Error
File "node.opa", line 21, characters 10-32, (21:10-21:32 | 592-614)
Expression has type { hd: list(node); tl: node } / 'c.a but is coerced into
list('a).
Types { name: string; description: string } and
{ hd: 'a; tl: list('a) } / { nil } are not compatible
Hint:
  One of the sum types may be missing the following cases of the
  other:
  { nil }
  { hd tl }.

Что означает это сообщение компиляции и как его исправить?

1 Ответ

3 голосов
/ 09 сентября 2011

Я думаю, вы просто перевернули nodes и selectedNode в строке 21:

nodes = [selectedNode | nodes]
...