Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, PC_2, Вы писали:
M>>>
M>>>[1..2].foldLeft(любая_функция)
M>>>
PC_>>да не. Слишком много букв
M>>>горазддо понятнее, чем
M>>>
M>>>1..2\*
M>>>
M>>>особенно если кода больше, чем одна строчка
PC_>>Обратный слеш напоминает блок который развернут в другую сторону и пытается "схлопнуть" то что слева. PC_>>Так что ультрапонятно и ультракоротко. Кстате раньше этот оператор назывался по другому, но теперь все пучком
L>А как будет выглядеть правый fold?
ну ясен перец
*/1..2
потому что напоминает слеш, который пытается схлопнуть то, что справа
Здравствуйте, samius, Вы писали:
S>Здравствуйте, PC_2, Вы писали:
M>>>Память будет тратиться только на собственно результат Миллион я не высичлял, но 100 000 вполне спокойно обрабатывает.
M>>>Думаю, на PC_2 фиг сделаешь.
PC_>>Чо-чо, на РС не сделаешь ?
PC_>>А так
PC_>>
PC_>>Sum:=1
PC_>>Sum*=(I<1048576?I)
PC_>>
S>
S>Operators: S1
S>Object reference not set to an instance of an object.
S>================
S>Sum:=1
S>Sum:=1
S>...um:=1
S>......1
S>S1
S>
S>S:=1
S>S*=(I<1048576?I)
S>
S>
S>Operators: 1Expression
S>Object reference not set to an instance of an object.
S>================
S>S:=1
Но на самом деле там действительно есть баг, можно сделать еще круче и проще
E S:=1
E !N:=1..1048576
E S*=N
Правда не уверен что на версии полторамесячной давности это отработает, но всеже. Код полность корректен, может и есть баги, но они как вы понимаете фиксятся, это мелочевка
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Здравствуйте, Mamut, Вы писали:
M>Здравствуйте, Lloyd, Вы писали:
L>>Здравствуйте, PC_2, Вы писали:
M>>>>
M>>>>[1..2].foldLeft(любая_функция)
M>>>>
PC_>>>да не. Слишком много букв
M>>>>горазддо понятнее, чем
M>>>>
M>>>>1..2\*
M>>>>
M>>>>особенно если кода больше, чем одна строчка
PC_>>>Обратный слеш напоминает блок который развернут в другую сторону и пытается "схлопнуть" то что слева. PC_>>>Так что ультрапонятно и ультракоротко. Кстате раньше этот оператор назывался по другому, но теперь все пучком
L>>А как будет выглядеть правый fold?
M>ну ясен перец
M>
M>*/1..2
M>
M>потому что напоминает слеш, который пытается схлопнуть то, что справа
M>а потом произойдет коллапс вселенной: M>
M>*/1..2\*
M>
Молодец, даже отметил улыбкой. Ты уже начинаешь думать в моем стиле.
Одним словом, свой язык — делай шо хошь
Кстате рациональные идеи приветствуются
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
PC_>>>>да не. Слишком много букв
M>>>>>горазддо понятнее, чем
M>>>>>
M>>>>>1..2\*
M>>>>>
M>>>>>особенно если кода больше, чем одна строчка
PC_>>>>Обратный слеш напоминает блок который развернут в другую сторону и пытается "схлопнуть" то что слева. PC_>>>>Так что ультрапонятно и ультракоротко. Кстате раньше этот оператор назывался по другому, но теперь все пучком
L>>>А как будет выглядеть правый fold?
PC_>Молодец, даже отметил улыбкой. Ты уже начинаешь думать в моем стиле. PC_>Одним словом, свой язык — делай шо хошь
Ты не ответил на выделенный выше вопрос
PC_>Кстате рациональные идеи приветствуются
Перестать гнаться за "понятностью" наследников apl
PC_>Там если я пишу код PC_>S:=1 PC_>S*=(I<1048576?I)
PC_>То подразумеваю код PC_>E S:=1 PC_>E S*=(I<1048576?I)
PC_>E от слова Expression, начало выражения
Нахрена?
PC_>Поэтому код может быть отформатирован еще вот так
PC_>
PC_>>>>>да не. Слишком много букв
M>>>>>>горазддо понятнее, чем
M>>>>>>
M>>>>>>1..2\*
M>>>>>>
M>>>>>>особенно если кода больше, чем одна строчка
PC_>>>>>Обратный слеш напоминает блок который развернут в другую сторону и пытается "схлопнуть" то что слева. PC_>>>>>Так что ультрапонятно и ультракоротко. Кстате раньше этот оператор назывался по другому, но теперь все пучком
L>>>>А как будет выглядеть правый fold?
PC_>>Молодец, даже отметил улыбкой. Ты уже начинаешь думать в моем стиле. PC_>>Одним словом, свой язык — делай шо хошь
M>Ты не ответил на выделенный выше вопрос
Правого фолда нет, как и значения аккумулятора.
Это базовая упрощенная операция.
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Здравствуйте, PC_2, Вы писали:
PC_>Здравствуйте, samius, Вы писали:
PC_>Там если я пишу код PC_>S:=1 PC_>S*=(I<1048576?I)
PC_>То подразумеваю код PC_>E S:=1 PC_>E S*=(I<1048576?I)
Да, и подразумеваешь что он работает. Это я уже понял.
E S:=1
E S*=(I<5?I)
Operators: 1Expression
Object reference not set to an instance of an object.
=================
S:=1
PC_>Но на самом деле там действительно есть баг, можно сделать еще круче и проще
PC_>
PC_>E S:=1
PC_>E !N:=1..1048576
PC_>E S*=N
PC_>
Unable to cast object of type 'RS.DOM.Types.MutableName' to type 'RS.DOM.Types.Mutable'.
S:=1
S:=1
...S:=1
......1
N:=1..1048576
PC_>Правда не уверен что на версии полторамесячной давности это отработает, но всеже. Код полность корректен, может и есть баги, но они как вы понимаете фиксятся, это мелочевка
PC_>>>>>>Обратный слеш напоминает блок который развернут в другую сторону и пытается "схлопнуть" то что слева. PC_>>>>>>Так что ультрапонятно и ультракоротко. Кстате раньше этот оператор назывался по другому, но теперь все пучком
L>>>>>А как будет выглядеть правый fold?
PC_>>>Молодец, даже отметил улыбкой. Ты уже начинаешь думать в моем стиле. PC_>>>Одним словом, свой язык — делай шо хошь
M>>Ты не ответил на выделенный выше вопрос
PC_>Правого фолда нет, как и значения аккумулятора.
Здравствуйте, Mamut, Вы писали:
PC_>>Там если я пишу код PC_>>S:=1 PC_>>S*=(I<1048576?I)
PC_>>То подразумеваю код PC_>>E S:=1 PC_>>E S*=(I<1048576?I)
PC_>>E от слова Expression, начало выражения
M>Нахрена?
За темже хреном что каждое сишное выражение заканчивается точкой с запятой. Я сделал круче, у меня начинается каждое выражение с E.
Начинаться может еще с G ( группа ) или с D ( декларация )
Таким образом при первом беглом взгляде на строчку сразу видно что это обьявлено. Группа, Выражение или Декларация, достаточно взглянуть на первый символ
PC_>>Поэтому код может быть отформатирован еще вот так
PC_>>
Это инициализация мутабл переменной, а не массива. Тоесть по сути это не массив.
I и J это встроенные мутабл переменные, можно обьявлять еще свои, указывая диапазоны их изменения.
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Здравствуйте, samius, Вы писали:
S>Здравствуйте, PC_2, Вы писали:
PC_>>Здравствуйте, samius, Вы писали:
PC_>>Там если я пишу код PC_>>S:=1 PC_>>S*=(I<1048576?I)
PC_>>То подразумеваю код PC_>>E S:=1 PC_>>E S*=(I<1048576?I)
S>Да, и подразумеваешь что он работает. Это я уже понял. S>
S>E S:=1
S>E S*=(I<5?I)
S>
S>
S>Operators: 1Expression
S>Object reference not set to an instance of an object.
S>=================
S>S:=1
S>Unable to cast object of type 'RS.DOM.Types.MutableName' to type 'RS.DOM.Types.Mutable'.
S>S:=1
S>S:=1
S>...S:=1
S>......1
S>N:=1..1048576
PC_>>Правда не уверен что на версии полторамесячной давности это отработает, но всеже. Код полность корректен, может и есть баги, но они как вы понимаете фиксятся, это мелочевка
S>Оперирую чем есь, конечно мелочевка.
Ладно, тут работы подкинули срочной. Седне пофиксю. Там на 10 мин. дела
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
PC_>>>E от слова Expression, начало выражения
M>>Нахрена?
PC_>За темже хреном что каждое сишное выражение заканчивается точкой с запятой. Я сделал круче, у меня начинается каждое выражение с E. PC_>Начинаться может еще с G ( группа ) или с D ( декларация ) PC_>Таким образом при первом беглом взгляде на строчку сразу видно что это обьявлено. Группа, Выражение или Декларация, достаточно взглянуть на первый символ
Так подавляющее большинство действий в программировании — это expression, е не нужен
Язык настолько ультрапонятен и просот, что одинаковая операция в нем то массив объявляет, то мутабельную переменную
Итак, согласно твоим же словам !N:=1..1048576 генерирует массив значений. Возвращаемся к вопросу. почему S*=N — это умножение на все элементы массива, а не умножение каждого элемента массива на S?
Здравствуйте, Lloyd, Вы писали:
L>Приведенный код ничем не лучше в плане потребления памяти (хвостовой рекурсии-то нету). Пожалуй даже хуже, т.к. стек по размеру мягко говоря обычно меньше размера доступной оперативки.
От же-шь занудные вы...
def factorial(n, i = 1){ | (0,_) | (1,_) => i | _ => factorial(n - 1, i * n)}
Здравствуйте, PC_2, Вы писали:
M>>Ответь на неглупый. Вернее перепиши его так, чтобы он стал эквивалентен приведенному коду — без дикого жора памяти
PC_>Мамут не стоит настаивать на ерунде. PC_>Я то напишу, не вопрос и смогу работать с числами которые имеют, например, миллиард разрядов. PC_>Как это сделал с рациональными числами, архитектура у меня позволяет еще не такое делать,
Мой вопрос был не о максимальной разрядности чисел. Спрошу четче: для итерирования последовательности из n элементов в приведенных примерах создаются массивы для хранения их индексов. Это — единственный способ организации итераций? Если нет, то можно увидеть, как будет выглядеть альтернативный способ?
PC_>но зачем, вот например Немерла не обуздает эту проблему никакими макросами, потому что пасется на типах Шарпа, ксате говоря довольно скудных
Немерл не "пасется на типах Шарпа", они вместе с шарпом "пасутся" на системе типов .NET, в 4-ой версии которой есть такой тип как BigInteger, разрядность которого ограничена лишь объемом доступной памяти.
"пасется на типах Шарпа, ксате говоря довольно скудных" — довольно красноречиво говорит об уровне вашего знакомства с платформой. Как при этом можно столь уверенно подвергать критике языки, не имея о них даже поверхностного представления — за гранью моего понимания
Здравствуйте, PC_2, Вы писали:
PC_>Здравствуйте, samius, Вы писали:
PC_>>>Правда не уверен что на версии полторамесячной давности это отработает, но всеже. Код полность корректен, может и есть баги, но они как вы понимаете фиксятся, это мелочевка
S>>Оперирую чем есь, конечно мелочевка.
PC_>Ладно, тут работы подкинули срочной. Седне пофиксю. Там на 10 мин. дела
Не спеши. Даже если пофиксишь, то оверхеду на вот такое действие
E S*=(I<2?I)
будет столько, что функциональный квиксорт покажется пределом оптимизации.
Здравствуйте, Mamut, Вы писали:
PC_>>>>E от слова Expression, начало выражения
M>>>Нахрена?
PC_>>За темже хреном что каждое сишное выражение заканчивается точкой с запятой. Я сделал круче, у меня начинается каждое выражение с E. PC_>>Начинаться может еще с G ( группа ) или с D ( декларация ) PC_>>Таким образом при первом беглом взгляде на строчку сразу видно что это обьявлено. Группа, Выражение или Декларация, достаточно взглянуть на первый символ
M>Так подавляющее большинство действий в программировании — это expression, е не нужен
Мамут не совсем языкостроитель, но скилы растут
Экспрешин нужно чтобы форматировать код нормально.
Например Си
a = 1<2 &&
A<b &&
A>C &&
F<K;
Точка с запятой нужна, это же не бейсик, и транслятор не знает где заканчивается выражение, он может это принять за
несколько выражений
a = 1<2 &&;
A<b &&; A>C &&;
F<K;
у меня
E a = 1<2 &
A<b &
A>C &
F<K
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Здравствуйте, PC_2, Вы писали: PC_>Родилась идея создать язык: PC_>А) Простой PC_>Б) Ультракороткий
Вы опоздали.
Никлаус Вирт создал подобный язык более 20 лет назад. И называется он Оберон. Описание — на 16 страницах.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!