Здравствуйте, Mamut, Вы писали:
PC_>>Ну какими макросами Немерла такое реализуешь ?
M>Такое даром никому не надо.
Явно имеется в виду неявное распространение NULL. Частично реализовано в C#; для полного щастя надо бы реализовать lifted member access operator, известный под псевдонимом ".?". Который вместо бросания NRE возвращает null.
Народ его жаждет довольно-таки часто, т.к. это позволяет намного реже писать явные сравнения с null.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
PC_>>>Цель получить и короткий и понятный язык.
M>>Угу. И этоговорит человек, который выдумывает
M>>
M>>E 1..5\*
M>>
M>>Это, видимо, понятнее, чем в q/j/k, ага
PC_>>>Никаких шуток, есть рабочий транслятор и рабочий набор примеров и еще не вспаханое поле аспектного программирования. PC_>>>Я хочу это неклюжее ООП заменить исключительно гибкой структурой построеной на распозновании классов.
M>>Чего-чего?
PC_>Ну ты даешь. Конечно это мегапонятно.
PC_>1..5 генерит массив 1,2,3,4,5 PC_>А операция \* сворачивает по умножению PC_>А еще можно писать вот так
PC_>1..5\< PC_>сворачивает по операции меньше — получаем минимум PC_>или
PC_>1..5\> PC_>Получили максимум. И всего то 6 байт !
PC_>>>Никаких шуток, есть рабочий транслятор и рабочий набор примеров и еще не вспаханое поле аспектного программирования. PC_>>>Я хочу это неклюжее ООП заменить исключительно гибкой структурой построеной на распозновании классов.
M>>Чего-чего?
KV>Это он про свое видение параметрического полиморфизма, похоже
KV>Знаете, товарищ Мамут, у меня складывается странное ощущение, что нас тут сегодня жестоко оттроллили, но обосновать, увы не могу
PC_>>>>Никаких шуток, есть рабочий транслятор и рабочий набор примеров и еще не вспаханое поле аспектного программирования. PC_>>>>Я хочу это неклюжее ООП заменить исключительно гибкой структурой построеной на распозновании классов.
M>>>Чего-чего?
KV>>Это он про свое видение параметрического полиморфизма, похоже
PC_>Не просто параметрического. Это инстанцирование классов в зависимости от обстоятельств. PC_>Только у данных обладающих определенными свойствами должни появляться такие понятия как Класс. PC_>Одни блоки данных могут свободно мигрировать по мере работы программы от одних классов к другим.
PC_>>>Слушайте, вы выглядите как минимум смешно. PC_>>>Один высмыкнул пример сортировки пузыря из контекста, всего лишь строчку, остальные как хорьки весело подхватили и принялись комментировать, клея несуразное. PC_>>>Обьясняю еще для тех кто в танковой дивизии, код пузырька приведен в первом посте этой теме.
VD>>Смотри, все харьки, задают глупые вопросы и не понимают твоего кода. VD>>А между прочим ты обещал, что "Кодить на нем будет действительно просто и быстро". Какой же кодить, если люди даже понять его не могут?
PC_>они все понимают, даже уже разбирают код, просто притворяются.
Разбирают код по логам интерпретатора, а не по языку. Потому что понять, что там происходит, невозможно
PC_>>>Спасибо, но это не Квик сорт. Это его пародия. PC_>>>Алгоритм Квик сорт включает перемещение элементов на "одном участке" памяти. PC_>>>Тоесть не требует дополнительных ресурсов памяти.
PC_>>>Тоесть банально этот код не решает поставленную задачу. Точка.
VD>>А этот говнобред решает: PC_>>>>>//7. квик сорт PC_>>>>>E ( S.I.J<S.I.(S.I.Len/2)? PC_>>>>> S.(I*2+1): PC_>>>>> S.(I*2+2) PC_>>>>> ),=S.I.J
VD>>
VD>>По твоим же объяснениям мы выяснили, что ,= добавляет элемент к массиву. Значит сортировки по месту мы уже не имеем. Так что дальше уже разбираться не в чем.
PC_>я же ответил уже на вопрос на счет квик сорт. PC_>Во-первых мой пример не работает
Тогда нахрена его приводить?
PC_>Во-вторых доводить до ума не имеет смысла, поскольку также как Немерла не решает поставленной задачи
Он решает поставленную перед квиксортом задачу и — главное — работает
PC_>Я много не думаю. Много думать вредно. PC_>Я просто знаю что существующие языки заставляют неоправданно писать много кода и не являются далеко не идеалом построения систем. PC_>Поэтому когда программист говорит что я это сделаю за час, лучше говорить что я это сделаю за три часа. Инструмент слишком не совершенен. PC_>ООП генерит не очень поворотливые конечные автоматы с заменяемыми модулями.
PC_>Каждый язык программирования является "драйверным", поскольку довольно плотно сидит на архитектуре процессора.
Смотрю я на Erlang и не вижу там ни плотноой архитектуры процессора ни ООП.
PC_>>Да не будет он выглядеть как говнокод, в том то и дело. PC_>>Тогда профитов у языка никаких не будет и тогда затею можно считать пустой.
PC_>Вот очень приблизительный набросок Шахмат, в 1 кб на РС PC_>Просьба хорькам не разбирать код, тут еще ничего не работает !
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, Mamut, Вы писали:
PC_>>>Ну какими макросами Немерла такое реализуешь ?
M>>Такое даром никому не надо. S>Явно имеется в виду неявное распространение NULL. Частично реализовано в C#; для полного щастя надо бы реализовать lifted member access operator, известный под псевдонимом ".?". Который вместо бросания NRE возвращает null. S>Народ его жаждет довольно-таки часто, т.к. это позволяет намного реже писать явные сравнения с null.
Это не тот NULL который null в шарпе.
Это, стащено с баз данных.
Т.е.
NULL!=NULL
NULL+1 -> NULL
1+10*100-NULL -> NULL
arr:=1..5
arr.10000 -> NULL
и так далее.
Очень удобно, если условие гдето оборачивается в NULL не нужно нигде писать ифы, проверки и тд.
Результирующее условие будет NULL, тоесть будет пропущено. Ибо любая операция с NULL дает NULL
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Здравствуйте, samius, Вы писали:
S>Здравствуйте, Mamut, Вы писали:
PC_>>>Если тебе нужно заполнить массив до половины ( до 5го элемента ), то можешь сделать примерно так:
PC_>>>
PC_>>>Х.(I<5?I) := I
PC_>>>
M>>Нихрена непонятно. Зачем там ?I S>На сколько я понимаю, I<5?I — это кусок тройственного оператора с опущенной частью :NULL
А, да, сейчас увидел
M>>
M>>X.(I<5) := I
M>>
S>I<5 вернет True/False при использовании его в качестве оператора сравнения. Однако, при свертке он используется как 'min'.
Здравствуйте, Pavel Dvorkin, Вы писали:
_>>>А на вашем языке можно закодить шахматы за 1 час студенческой ненабитой рукой? PC_>>Я к этому иду. Даже есть приблизительные наброски. Код шахмат займет от 300 байт до 1 кб.
PD>Так уже написано. Простая, хорошо понятная и ультракороткая программа. PD>http://rsdn.ru/forum/philosophy/2445064.1.aspx
Здравствуйте, frogkiller, Вы писали:
F>Здравствуйте, Pavel Dvorkin, Вы писали:
_>>>>А на вашем языке можно закодить шахматы за 1 час студенческой ненабитой рукой? PC_>>>Я к этому иду. Даже есть приблизительные наброски. Код шахмат займет от 300 байт до 1 кб.
PD>>Так уже написано. Простая, хорошо понятная и ультракороткая программа. PD>>http://rsdn.ru/forum/philosophy/2445064.1.aspx
Здравствуйте, Mamut, Вы писали:
M>Здравствуйте, samius, Вы писали:
S>>Здравствуйте, Mamut, Вы писали:
PC_>>>>Если тебе нужно заполнить массив до половины ( до 5го элемента ), то можешь сделать примерно так:
PC_>>>>
PC_>>>>Х.(I<5?I) := I
PC_>>>>
M>>>Нихрена непонятно. Зачем там ?I S>>На сколько я понимаю, I<5?I — это кусок тройственного оператора с опущенной частью :NULL
Даже без мануала можно разобраться, потому что ультрапростой
M>А, да, сейчас увидел
M>>>
M>>>X.(I<5) := I
M>>>
S>>I<5 вернет True/False при использовании его в качестве оператора сравнения. Однако, при свертке он используется как 'min'.
M>Думаю, дальше будет веселее
Что не так ?
Операция свертки "\" принимает вторым операндом операцию. Сейчас допустимые операции *,+,<,>
Поэтому операции вида array\< вполне допустимы
Кстате кто начал смотреть код, вот здесь перечислены все возможные унарные и бинарные операторы.
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>И правильно ли я понимаю, что выражение "1..5" означает "создать массив из пяти элементов, в котором X[i] = i"? Но ведь тогда, для того, чтобы посчитать факториал 1048576, ваша программа отожрет 1 мегабайт памяти только для формирования индексов, в то время, как в том же немерле можно обойтись по старинке:
KV>def factorial(n){ | 0 | 1 = > 1 | _ => factorial(n — 1)}
Если приведенный код — правильный, то функцию можно упростить до
def factorial(n){ 1 }
Здравствуйте, Privalov, Вы писали:
P>Здравствуйте, PC_2, Вы писали:
PC_>>Просто Квик Сорт я хочу переписать в терминах аспектной парадигмы, которую надеюсь внедрить в этом языке.
P>А теория структурной оптимизации параметрического синтеза стационарных состояний как-нибудь изпользуется при разработке?
а что ето ?
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>И правильно ли я понимаю, что выражение "1..5" означает "создать массив из пяти элементов, в котором X[i] = i"? Но ведь тогда, для того, чтобы посчитать факториал 1048576, ваша программа отожрет 1 мегабайт памяти только для формирования индексов, в то время, как в том же немерле можно обойтись по старинке:
KV>>def factorial(n){ | 0 | 1 = > 1 | _ => factorial(n — 1)}
L>Если приведенный код — правильный, то функцию можно упростить до L>def factorial(n){ 1 }
L>)
Шутка которая повторена в 4й раз в этой теме кажется еще смешнее, не правда ли ?
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
PC_>>>>>Если тебе нужно заполнить массив до половины ( до 5го элемента ), то можешь сделать примерно так:
PC_>>>>>
PC_>>>>>Х.(I<5?I) := I
PC_>>>>>
M>>>>Нихрена непонятно. Зачем там ?I S>>>На сколько я понимаю, I<5?I — это кусок тройственного оператора с опущенной частью :NULL
PC_>Даже без мануала можно разобраться, потому что ультрапростой
Ничего суперпростого. Было высказано предположение, которое могло быть как правильным, так и неправильным
M>>А, да, сейчас увидел
M>>>>
M>>>>X.(I<5) := I
M>>>>
S>>>I<5 вернет True/False при использовании его в качестве оператора сравнения. Однако, при свертке он используется как 'min'.
M>>Думаю, дальше будет веселее
PC_>Что не так ? PC_>Операция свертки "\" принимает вторым операндом операцию. Сейчас допустимые операции *,+,<,>
PC_>Поэтому операции вида array\< вполне допустимы
PC_>Кстате кто начал смотреть код, вот здесь перечислены все возможные унарные и бинарные операторы.
И? Без объяснения что делает часть из них, а так же приоритета операций этот список даром никому не нужен:
public enum OperationType
{
Agregate, //\ аггрегирование чего?
Generate, //.. генерация чего?
Apply, //:= может все таки assign?
DoubleApply, //:=: что?
AddApply, //,= что?
Dimension, //D что за размерность?
Add, //, добавление чего?
Compare, //? сравнение чего?
CompareInNot, //?: что?
NotNull, //: что notnull?
Next, //; next что?
Point, //. что?
Rational //./ что?
}