Как такой код написать правильно?
От: Аноним  
Дата: 14.08.13 13:16
Оценка:
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
Re: Как такой код написать правильно?
От: catbert  
Дата: 14.08.13 13:30
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Ошибка 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() — собственно объект

Не сразу привыкаешь.
Re: Как такой код написать правильно?
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 14.08.13 13:30
Оценка:
N.Zero()


Компилятор пытается объяснить, что N.Zero без скобок это конструктор, функция с сигнатурой void -> N.Zero.
Ce n'est que pour vous dire ce que je vous dis.
Re: Как такой код написать правильно?
От: _NN_ www.nemerleweb.com
Дата: 14.08.13 14:38
Оценка:
Здравствуйте, Аноним, Вы писали:

| Zero
Объявляет тип ну и у него есть конструктор который нужно вызвать
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.