WH>>>Все равно будет тонна синтаксического оверхеда.
M>>Не обязательно
WH>Практика показывает что обязательно.
WH>>>И не будет нормальных проверок.
M>>Теперь полключаем твою любимую статику и?
WH>Как? У нас компилятора то нет.
Блин. Причем тут компилятор???? Берешь в руки GWT — у тебя генерируется HTML+JS. Добавляешь к нему reactivejava, у тебя есть реактивность. Да еще и со столь любимой тобой статикой
M>>Каша там только в твоей голове. А делает этот код, если я не ошибаюсь, то же самое (с разными интервалами выводит на странице текст).
WH>Каша там в коде.
WH>У Гапертона два калбека в то время как в оригинале 0.
В оригинале там Buffer.write, как минимум
M>>Особой разницы с Ur'ом нет.
WH>Куча лишнего кода на ровном месте это конечно ерунда.
M>>Единственная «разница» в том, что не явно отправляются сообщения, а вызывается Buffer.write и Buffer.render
WH>Buffer.render вызывается один раз.
WH>Дальше всю работу делает реактивность.
Которая где-то там упрятана в недрах Ur'а. И? Тебе написать обертку над достаточно низкоуровневым кодом Гапертона религия не позволяет?
M>>Пример, описанный Гапертоном более низкоуровневый, что не мешает ео уложить в настолько же прямолинейную обертку
WH>Ну попробуй.
runWorkerJS взят отсюда:
https://gist.github.com/989438. Код там страшный, потому что в W3C, как всегда, придумали какую-то хрень

Код не тестировался, так, для иллюстрации идеи.
/*
* Wrapper
*/
var workerCode = function( a_event ){
var count = 0;
setInterval( function(){
postMessage( a_event.data.prefix + ' ' + count++ );
}, a_event.data.delay );
};
var workerWrapper = function(){
return {
start: function(prefix, delay){
var code = "self['onmessage'] = " + workerCode.toString();
runWorkerJs(code, {prefix: prefix, delay: delay}, this.write)
},
write: function(text){
document.write(result);
}
}
};
/*
* Code
*/
workerWrapper().start("A", 5000);
workerWrapper().start("B", 5000);
Достаточно generic обертка будет выглядеть, естественно, по-другому. По сути, runWorkerJs уже достаточно.
M>>И ты еще утверждаешь, что это гуано лучше, чем полноценная многозадачность, которую привел Gaperton?
WH>Это "гуано" позволяет писать прямолинейный код без кучи каллбеков.
Который не будет работать чуть более, чем во всех реальных случаев из-за реализации, но это е тебя не волнует, так ведь
M>>И ты еще утверждаешь, что ее же невозможно реализовать средствами JS?
WH>Без тонный синтаксического оверхеда не получится.
Ну да, я помню, что такое твой синтаксичесий оверхед. Скобочки там, ага
M>>То есть, внятно объяснить, что именно тебе надо, ты не в состоянии.
WH>То есть ты не в состоянии посмотреть на то, как работает ур?
Смотрю я на Ur. Конкретно в данный момент я смотрю на threads. Ничего сверхъестественного там нет. Ну сахар и сахар

Пишешь тонкий враппер над Гапертоновским кодом и радуешься жизни. Если то вообще надо...
Смотрю на
ListEdit. Ну, сигналы/слоты

Вау. Это и есть реактивность? А, нет, наверное «реактивность» это установка значений вручную вот так:
<button value="Change to:" onclick={s <- get ss'; set ss s}/>
О да, это — верх программерской мысли
Смотрю на <a href="
http://www.impredicative.com/ur/more/dragList.html">dragList</a>, там чем дальше, тем реактивнее, ага
<li onmousedown={set draggingItem (Some itemSource)}
onmouseup={set draggingItem None}
onmouseover={di <- get draggingItem;
case di of
None => return ()
| Some di => original <- get di;
movedOver <- get itemSource;
set di movedOver;
set itemSource original;
set draggingItem (Some itemSource)}>
<dyn signal={Monad.mp cdata (signal itemSource)}/>
</li></xml>
Вся «реактивность» заключается в сахаре над signal/slots
И этот человек мне говорит, что вот это вот нельзя реализовать в библиотеке для любого серверного языка?

Ах, да, signal/slot есть и для JS. Правда, для тебя он будет слишком многословным, видать.
WH>Ну посмотри на knockuot.js там реактивность правильная.
WH>Но с кучей синтаксического оверхеда.
Его не так много, чтобы этого кого-либо парило, кроме тебя
M>>Напомню контекст. Ты утверждал, что сделать что-то, что делает Ur, билиотекой невозможно. Оказалось, что не только возможно, но и делают. Единственный твой аргумент — это «синтаксический оверхед»
WH>Так это единственный смысл существования яву.
WH>Есть лишь один способ сравнить уровень языков это сравнить сколько кода будет написано при решении одной и той же задачи.
Самый крутой — мой язык. Там есть одна функция, «сделатьОхрененно()»

Я частично согласен с тобой в определении, до тех пор пока это не превращается в абсурд. Потому что бесспорным победителем (на определенном классе задач) выйдет какой-нибудь J.
M>>Внятно объяснить, что именно тебе надо, ты не в состоянии. Хотя — нет, можешь даже не утруждать себя. Тебе надо, чтобы оно выглядело, как Ur, вело себя,к ак Ur, и до последней запятой содержало абсолютно точно такое же количество букв, как Ur.
WH>Аргументы совсем кончились.
У тебя — да. Почему реактивнотсь для GWT — это не то, ты так и не объяснил.
Почему невозможно реализовать библиотекой (на Java/C++/Python/Ruby/хрен знает что там еще) то, что реализует Ur, ты так и не объяснил. Твой единственный «аргумент» — это «Без компилятора не получится».