Re[3]: Преобразование в кортеж
От: SergASh  
Дата: 19.10.10 07:19
Оценка: 1 (1) +2
Здравствуйте, WolfHound, Вы писали:

WH>Но ломающие изменения предлагаю оставлять на 2.0


Если делать ломающие изменения, то гораздо лучше делать их до первого релиза.

С исходной посылкой согласен, фича вредная.
Re[3]: Преобразование в кортеж
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.10.10 21:08
Оценка: +3
Здравствуйте, WolfHound, Вы писали:

VD>>Я тоже склоняюсь, что данную фичу лучше запретить. От нее вреда больше чем пользы.

WH>плюс адын.
WH>Но ломающие изменения предлагаю оставлять на 2.0

Дык до релиза это даже и не ломающее изменение. А в 2.0 это уже будет точно несовместимость с предыдущей версией.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Преобразование в кортеж
От: hardcase Пират http://nemerle.org
Дата: 19.10.10 06:53
Оценка: 1 (1) +1
Здравствуйте, VladD2, Вы писали:

VD>Но действительно вреда от фичи куда больше чем достоинств.


+1

VD>Дело даже не в явном указании, а в том что немерл поддерживает неявное преобразование. Скажем если у нас есть функция с двумя параметрами, то в нее всегда можно передать кортеж. Если мы запрещаем неявное преобразование, то и эта фича отвалится. А будет ли это хорошо?


Вот этот сценарий — кортеж распаковываемый в аргументы функции, мне думается автоматизировать нужно.

Но обратная операция весьма спорная, так как код подобный этому выглядит весьма странно:

def f(a) ...

f(1,2)
/* иЗвиНите зА неРовнЫй поЧерК */
Re[6]: Преобразование в кортеж
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.10.10 16:15
Оценка: 8 (1)
Здравствуйте, Воронков Василий, Вы писали:

ВВ>А какие проблемы с этим неявным приведением, кроме чисто технических? Неочевидно получается?


Да.
Например вот в таком коде:
http://code.google.com/p/nemerle/issues/detail?id=1268&can=1&sort=-id
def f (x, y)
{
 def f (x) 
 {
  f(x, y) 
 };

 if (x <= 0)
  y
 else
  f (x,1) + y 
}

f(1,3);

Вместо сообщения о том, что в функцию передается неверное количество параметров получается сообщение:

in argument #1, needed a ?, got (? * ?): the element with index 0 in tuple '(? * ?)' is recursive. This bug can be caused by the parametr to tuple transformation.


ВВ>Я в принципе вполне понимаю, почему поляки так сделали.


Все тоже — хотели как лучше.

ВВ>Совпадение синтаксиса вызова функции и литерала кортежа — не очень хорошо. Они фактически сделали финт ушами и говорят — они совпадают не просто так.


Скажу больше. Никакого совпадения не было. Это было задумано с самого начала. В системе типов функция описывается так: "тип -> тип" и подразумевается, что если параметров более одного, то "тип" — это кортеж:
  public variant FixedType : TypeVar
  {
...
    | Fun { from : TypeVar; [RecordIgnore] public argsCount : int; to : TypeVar;
...
    | Tuple { args : list [TypeVar]; }

Потому я и высказываю сомнения, что удастся легко отключить эту фичу.

Выделенное поле я ввел специально чтобы учитывать в эвристике является ли полученная перегрузка прямой или получена в результате картежного преобразования. Ранее в компиляторе было вообще невозможно отличить эти варианты и как следствие невозможно было применять LINQ.

ВВ>Ведь параметры функции это и есть кортеж. И отсюда следуют все ваши неявные приведения. Т.е. это не просто неявные приведения, это, получается, часть дизайна языка.


Так и есть. Но в условиях библиотек написанных для шарпа где таких неявных преобразований нет — это часто приводит к проблемам.

ВВ>Кардинальным решением было бы изменить литерал кортежа на что-то более другое и бесскобочное.


Литерал тут в общем-то не причем. Дело в логике работы с функциями.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Преобразование в кортеж
От: artelk  
Дата: 19.10.10 06:33
Оценка: :)
Здравствуйте, VladD2, Вы писали:

VD>def a = (1,2);

VD>def f(x,y) {}

VD>f(a) // Error
VD>f(..a) // OK


А можно так?
def tuple = (1,2);
def f(x,y) {}
f tuple;//cкобки уже есть в tuple :)

//или так:
f $ tuple;
Re[4]: Преобразование в кортеж
От: hardcase Пират http://nemerle.org
Дата: 19.10.10 06:43
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Дык до релиза это даже и не ломающее изменение. А в 2.0 это уже будет точно несовместимость с предыдущей версией.


Ну ты приколист.
Тут на самом деле как не крути, а ломающее изменение будет — что в 1.0 по сравнению с 0.9.х, что в 2.0 по сравнению с 1.0.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[4]: Преобразование в кортеж
От: WolfHound  
Дата: 19.10.10 07:45
Оценка: :)
Здравствуйте, VladD2, Вы писали:

VD>Дык до релиза это даже и не ломающее изменение. А в 2.0 это уже будет точно несовместимость с предыдущей версией.

2.0 один хрен будет не совместима с 1.0.
У нас просто нет ресурсов чтобы в 2.0 воспроизвести все баги 1.0
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[4]: Преобразование в кортеж
От: hardcase Пират http://nemerle.org
Дата: 19.10.10 09:27
Оценка: +1
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Здравствуйте, hardcase, Вы писали:


H>>
H>>def f(a) ...

H>>f(1,2)
H>>


ВВ>Я так понимаю, это ввели отчасти из-за... "эстетических" причин. Т.к. с Си-подобным синтаксисом вызов бы выглядел так:


ВВ>
ВВ>f((1,2))
ВВ>


Что-то нечасто я вдел чтобы функция принимала чисто кортеж.

Но я всеже предполагаю, что выбрасывание этой чисто эстетической фичи позволит упростить алгоритм выбора перегрузок и механизм вывода типов, что положительно скажется на скорости компиляции.
/* иЗвиНите зА неРовнЫй поЧерК */
Преобразование в кортеж
От: _nn_ www.nemerleweb.com
Дата: 18.10.10 15:12
Оценка:
Что вызовется в этом случае:
module Program
{
  Run[T](_ : T) : void { Console.WriteLine("_ : T"); }
  Run[T](params _ : array[T]) : void { Console.WriteLine("params _ : array[T]"); }

  Main() : void
  {
    Run(1, 2);
  }
}


Или почему этот код компилируется, а не выдает ошибку ?
def f(a)
{
  | (x, y) => ()
  | _ => ()
}

f(1, 2);


Все дело в неявном создании кортежа.
Посему и вопрос не стоит ли эту фичу убрать и явно указывать создание кортежа ?
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: Преобразование в кортеж
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.10.10 16:07
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Все дело в неявном создании кортежа.


Ага.

__>Посему и вопрос не стоит ли эту фичу убрать и явно указывать создание кортежа ?


Откровенно говоря эта хрень мня тоже достала, но:
1. Она весьма глубоко встроена в систему типов. Придется курочить все начиная с солвера.
2. Довольно много кода использует эту фичу. Боюсь, что даже в компиляторе его будет не мало.

Но действительно вреда от фичи куда больше чем достоинств.

Что касается явного указания, то надо предложить синтаксис.
Дело даже не в явном указании, а в том что немерл поддерживает неявное преобразование. Скажем если у нас есть функция с двумя параметрами, то в нее всегда можно передать кортеж. Если мы запрещаем неявное преобразование, то и эта фича отвалится. А будет ли это хорошо? Если нет, то нужен синтаксис позволяющий явно указать, что нам нужно передать элементы кортежа в качестве параметров методов.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Преобразование в кортеж
От: _nn_ www.nemerleweb.com
Дата: 18.10.10 16:36
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Но действительно вреда от фичи куда больше чем достоинств.


VD>Что касается явного указания, то надо предложить синтаксис.

VD>Дело даже не в явном указании, а в том что немерл поддерживает неявное преобразование. Скажем если у нас есть функция с двумя параметрами, то в нее всегда можно передать кортеж. Если мы запрещаем неявное преобразование, то и эта фича отвалится. А будет ли это хорошо? Если нет, то нужен синтаксис позволяющий явно указать, что нам нужно передать элементы кортежа в качестве параметров методов.

Согласен, нужно это хорошо продумать.

Тут много вариантов как указать.
Скажем как-то так:
def a = (1,2);

def f(x,y) {}

f(a) // Error
f(*a) // OK
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[3]: Преобразование в кортеж
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.10.10 19:37
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Тут много вариантов как указать.

__>Скажем как-то так:
__>
__>def a = (1,2);

__>def f(x,y) {}

__>f(a) // Error
__>f(*a) // OK
__>


Это все не очевидно. А унарное "умножение" может еще и столку сбить.

Возможно более красивым ходом было бы использовать аналог раскрытия списков в квази-цитировании:
>
def a = (1,2);

def f(x,y) {}

f(a) // Error
f(..a) // OK


Но опять же надо подумать.

Плюс, как я уже говорил, поддержка глубоко встроена в солвер, а значит во весь вывод типов.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Преобразование в кортеж
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.10.10 20:16
Оценка:
Народ! Высказываетесь по этому поводу!

Я тоже склоняюсь, что данную фичу лучше запретить. От нее вреда больше чем пользы.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Преобразование в кортеж
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 18.10.10 20:21
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Народ! Высказываетесь по этому поводу!


VD>Я тоже склоняюсь, что данную фичу лучше запретить. От нее вреда больше чем пользы.


Лично мне она не мешает. Несколько раз использовал её, но если её не станет, то не расстроюсь.
Ce n'est que pour vous dire ce que je vous dis.
Re[2]: Преобразование в кортеж
От: WolfHound  
Дата: 18.10.10 20:37
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Я тоже склоняюсь, что данную фичу лучше запретить. От нее вреда больше чем пользы.

плюс адын.
Но ломающие изменения предлагаю оставлять на 2.0
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[2]: Преобразование в кортеж
От: Рысцов Денис  
Дата: 18.10.10 21:01
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Народ! Высказываетесь по этому поводу!


VD>Я тоже склоняюсь, что данную фичу лучше запретить. От нее вреда больше чем пользы.


Мне нравится (кажется удобным), что можно написать [(1,2)].Map(fun(a,b){ ... }) не смотря на то, что Map имеет тип 'a->'b. Если фичу запретить, то придется писать [(1,2)].Map(fun(_){ | (a,b) => ... }), что менее элегантно. С другой стороны именно неявными преобразованиями меня пугает scala.
Re[3]: Преобразование в кортеж
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.10.10 21:12
Оценка:
Здравствуйте, Рысцов Денис, Вы писали:

РД>Мне нравится (кажется удобным), что можно написать [(1,2)].Map(fun(a,b){ ... }) не смотря на то, что Map имеет тип 'a->'b.


Тут можно будет писать [(1,2)].Map(fun((a,b)){ ... })

РД>Если фичу запретить, то придется писать [(1,2)].Map(fun(_){ | (a,b) => ... }), что менее элегантно. С другой стороны именно неявными преобразованиями меня пугает scala.


Проблема в том, что это преобразование создает невероятное количество вариантов при работе с LINQ-ом.

Я был вынужден ввести очень не простые эвристики в алгоритм разрешения перегрузки, чтобы это дело наконец-то заработало. Причем в режиме интеграции (когда код не дописан до конца) это все равно приводит к проблемам.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Преобразование в кортеж
От: Энсиди Россия funtoo.org
Дата: 19.10.10 04:44
Оценка:
Соглашаюсь с удалением этой фичи(бага)
Мне кажется, что если пишем def a = (1,2); , то a уже кортеж и использовать её как массив смысла нет... Хотя если можно это оставить, то почему бы и нет. С магическим синтаксисом, например f([a])
الحقيقة:الشئ الوحيد الذي(لا)يصدقه الناس!ا الزواج : جمع.وطرح.ثم(ضرب)!ولكنه قبل ذلك(قسمة) المحامي:لسان.وحنجرة.وروب!يدافع عن مال موكله (أعزائي)!وهو لا يعرف أحد منّا!الطالب (الأول)على فصله!لولا وجود الأخرين
Re[3]: Преобразование в кортеж
От: hardcase Пират http://nemerle.org
Дата: 19.10.10 06:45
Оценка:
Здравствуйте, Рысцов Денис, Вы писали:

РД>Мне нравится (кажется удобным), что можно написать [(1,2)].Map(fun(a,b){ ... }) не смотря на то, что Map имеет тип 'a->'b. Если фичу запретить, то придется писать [(1,2)].Map(fun(_){ | (a,b) => ... }), что менее элегантно.


По всей видимости поляки именно ради такого использования внедрили эту фичу.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[4]: Преобразование в кортеж
От: _nn_ www.nemerleweb.com
Дата: 19.10.10 09:03
Оценка:
Здравствуйте, SergASh, Вы писали:

SAS>Здравствуйте, WolfHound, Вы писали:


WH>>Но ломающие изменения предлагаю оставлять на 2.0


SAS>Если делать ломающие изменения, то гораздо лучше делать их до первого релиза.

+1
Раз эта фича не полезна, то лучше ее продумать и внести изменения до 2-й версии.
Т.к. проблему 1-й версии это решит уже сейчас, а 2-я версия будет не очень скоро.

SAS>С исходной посылкой согласен, фича вредная.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[3]: Преобразование в кортеж
От: Воронков Василий Россия  
Дата: 19.10.10 09:06
Оценка:
Здравствуйте, hardcase, Вы писали:

H>
H>def f(a) ...

H>f(1,2)
H>


Я так понимаю, это ввели отчасти из-за... "эстетических" причин. Т.к. с Си-подобным синтаксисом вызов бы выглядел так:

f((1,2))


И в глаза бросается некоторая излишняя скобочность. Мне и самому такое не нравится. Хотя проблему отчасти решают пайпы:

f <| (1, 2)
Re[5]: Преобразование в кортеж
От: Воронков Василий Россия  
Дата: 19.10.10 09:37
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Что-то нечасто я вдел чтобы функция принимала чисто кортеж.


Ну это может быть, к примеру, каррированная (в вашем случае — "частично примененная") функция. В таком случае сценарий не столь уж и редкий.

H>Но я всеже предполагаю, что выбрасывание этой чисто эстетической фичи позволит упростить алгоритм выбора перегрузок и механизм вывода типов, что положительно скажется на скорости компиляции.


А какие проблемы с этим неявным приведением, кроме чисто технических? Неочевидно получается?
Я в принципе вполне понимаю, почему поляки так сделали. Совпадение синтаксиса вызова функции и литерала кортежа — не очень хорошо. Они фактически сделали финт ушами и говорят — они совпадают не просто так. Ведь параметры функции это и есть кортеж. И отсюда следуют все ваши неявные приведения. Т.е. это не просто неявные приведения, это, получается, часть дизайна языка.

Кардинальным решением было бы изменить литерал кортежа на что-то более другое и бесскобочное.
Re[5]: Преобразование в кортеж
От: Воронков Василий Россия  
Дата: 19.10.10 09:57
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Но я всеже предполагаю, что выбрасывание этой чисто эстетической фичи позволит упростить алгоритм выбора перегрузок и механизм вывода типов, что положительно скажется на скорости компиляции.


Кстати, альтернатива — придумать более выразительный в плане синтаксиса, чем литерал, явный механизм упаковки аргументов в кортеж. Например так:

fun(1,2,)
Re[5]: Преобразование в кортеж
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.10.10 14:38
Оценка:
Здравствуйте, artelk, Вы писали:

A>А можно так?

A>
A>def tuple = (1,2);
A>def f(x,y) {}
A>f tuple;//cкобки уже есть в tuple :)

A>//или так:
A>f $ tuple;
A>


Это будет крайне трудно объяснить людям (а первое вообще противоречит концепциям языка).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Преобразование в кортеж
От: Воронков Василий Россия  
Дата: 19.10.10 14:41
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Это будет крайне трудно объяснить людям (а первое вообще противоречит концепциям языка).


А как тебе такой костыль:

fun(1,2,)


Т.е. запятая в конце — список параметров надо преобразовать в кортеж.
Re[7]: Преобразование в кортеж
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.10.10 16:11
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>А как тебе такой костыль:


ВВ>
ВВ>fun(1,2,)
ВВ>


Плохо — это и так допустимая конструкция. Да и опять же не очевидно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Преобразование в кортеж
От: Воронков Василий Россия  
Дата: 19.10.10 16:29
Оценка:
Здравствуйте, VladD2, Вы писали:

ВВ>>Совпадение синтаксиса вызова функции и литерала кортежа — не очень хорошо. Они фактически сделали финт ушами и говорят — они совпадают не просто так.

VD>Скажу больше. Никакого совпадения не было. Это было задумано с самого начала. В системе типов функция описывается так: "тип -> тип" и подразумевается, что если параметров более одного, то "тип" — это кортеж:

А что это дает с точки зрения языка? Т.е. я понимаю, что да, в статьях вроде как написано — считается, что параметры функции описываются через кортеж. Но мне казалось, что это больше "идейное" утверждение. Т.е. завтра можно сказать, что параметры функции ни через какой кортеж не описываются, и функция типа int -> (int * int) имееет на самом деле тип int -> int -> int.

Что-нибудь, кроме этой самой неявной упаковки/распаковки кортежа, будет противоречить этому утверждению?
Re[8]: Преобразование в кортеж
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.10.10 16:32
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>А что это дает с точки зрения языка? Т.е. я понимаю, что да, в статьях вроде как написано — считается, что параметры функции описываются через кортеж. Но мне казалось, что это больше "идейное" утверждение. Т.е. завтра можно сказать, что параметры функции ни через какой кортеж не описываются, и функция типа int -> (int * int) имееет на самом деле тип int -> int -> int.


ВВ>Что-нибудь, кроме этой самой неявной упаковки/распаковки кортежа, будет противоречить этому утверждению?


Текущая реализация. А так по идее должно все взлететь.

Надо повнимательнее посмотреть на ситуацию под отладчиком. Возможно удастся просто обрубить распаковку на уровне типизации функций (создания лишних перегрузок).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Преобразование в кортеж
От: Воронков Василий Россия  
Дата: 19.10.10 17:48
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Плохо — это и так допустимая конструкция.


Используется для создания кортежа из одного элемента?

VD>Да и опять же не очевидно.


Ну тут хз. Интересно было бы посмотреть на другие варианты. Как и на другие варианты бесскобочного литерала для кортежа. Наверняка можно придумать что-нибудь интересное.
Re[9]: Преобразование в кортеж
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.10.10 19:45
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Используется для создания кортежа из одного элемента?


Используется теми кому в лом при копипасте редактированием заниматься. Просто можно вбивать в любом перечислении лишнюю запитую.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Преобразование в кортеж
От: _nn_ www.nemerleweb.com
Дата: 28.10.10 16:04
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Скажу больше. Никакого совпадения не было. Это было задумано с самого начала. В системе типов функция описывается так: "тип -> тип" и подразумевается, что если параметров более одного, то "тип" — это кортеж:

VD>
VD>  public variant FixedType : TypeVar
VD>  {
VD>...
VD>    | Fun { from : TypeVar; [RecordIgnore] public argsCount : int; to : TypeVar;
VD>...
VD>    | Tuple { args : list [TypeVar]; }
VD>

VD>Потому я и высказываю сомнения, что удастся легко отключить эту фичу.

Есть вероятность это это все таки возможно ?
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[8]: Преобразование в кортеж
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.10.10 16:53
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Есть вероятность это это все таки возможно ?


Дык тут надо пробовать. Так ничего сказать нельзя. Учитывая, что народная поддержка вроде как есть, можно попробовать.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Преобразование в кортеж
От: Ka3a4oK  
Дата: 31.10.10 09:03
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Народ! Высказываетесь по этому поводу!


VD>Я тоже склоняюсь, что данную фичу лучше запретить. От нее вреда больше чем пользы.


Может для начала сделать ворнинг с сообщением о том, что в будущем фича будет запрещена?
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Re[3]: Преобразование в кортеж
От: hardcase Пират http://nemerle.org
Дата: 31.10.10 17:13
Оценка:
Здравствуйте, Ka3a4oK, Вы писали:

KK>Может для начала сделать ворнинг с сообщением о том, что в будущем фича будет запрещена?


Тут вопрос в другом — предположительно снос бошки этой "фиче" позволит некисло ускорить вывод типов (а имеено выбор перегрузок) и уменьшить время компиляции.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[3]: Преобразование в кортеж
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.11.10 16:53
Оценка:
Здравствуйте, Ka3a4oK, Вы писали:

KK>Может для начала сделать ворнинг с сообщением о том, что в будущем фича будет запрещена?


Как-то времени не остается. Релиз на носу. Надо или пробовать ее удалять, или оставпить все как есть.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Преобразование в кортеж
От: _nn_ www.nemerleweb.com
Дата: 10.11.10 11:37
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, _nn_, Вы писали:


__>>Есть вероятность это это все таки возможно ?


VD>Дык тут надо пробовать. Так ничего сказать нельзя. Учитывая, что народная поддержка вроде как есть, можно попробовать.


Поддержка есть
IMHO нужно пробовать.
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.