using Nemerle;
using Nemerle.Collections;
using System.Console;
module Program
{
variant N
{
| Zero
| S
{
x:N;
}
}
Main() : void
{
def x=N.S(N.S(N.S(N.Zero)));
_ = ReadLine();
}
}
Ошибка 1 in argument #1 (x), needed a Program.N, got void -> Program.N.Zero: void -> Program.N.Zero is not a subtype of Program.N [simple require] C:\Users\Сергей\Documents\Visual Studio 2012\Projects\ConsoleApplication5\ConsoleApplication5\Main.n 65 19 ConsoleApplication5
Здравствуйте, Аноним, Вы писали:
А>Ошибка 1 in argument #1 (x), needed a Program.N, got void -> Program.N.Zero: void -> Program.N.Zero is not a subtype of Program.N [simple require] C:\Users\Сергей\Documents\Visual Studio 2012\Projects\ConsoleApplication5\ConsoleApplication5\Main.n 65 19 ConsoleApplication5
def x=N.S(N.S(N.S(N.Zero)));
def x=N.S(N.S(N.S(N.Zero())));
N.Zero — функция, которая возвращает объект типа Zero, если ее вызвать
N.Zero() — собственно объект
Не сразу привыкаешь.
N.Zero()
Компилятор пытается объяснить, что
N.Zero без скобок это конструктор, функция с сигнатурой
void -> N.Zero.
Здравствуйте, Аноним, Вы писали:
| Zero
Объявляет тип ну и у него есть конструктор который нужно вызвать