[Ответить в тред] Ответить в тред

Check this out!


<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
363 | 11 | 146

Количество аргументов функций Аноним 26/04/18 Чтв 14:54:21  1180043  
15118680617310.jpg (19Кб, 180x202)
Положняк такой: функции с 3 или больше аргументами НЕНУЖНЫ.

Все функции должны принимать либо 0 аргументов (тогда это и не функции вовсе), либо 1 аргумент (унарные функции), либо 2 аргумента (бинарные функции). Все остальное нужно запретить (code convention'ом или компилятором). Пруф ми ронг.

Назовите хоть один пример функции, которой нужно принимать >=3 аргументов, и я поясню, почему вы неправы и пишете говнокод.
Аноним 26/04/18 Чтв 15:00:17  1180044
>>1180043 (OP)
иногда приходится с мультипоточностью ебаться итд итд. в теории звучит конечно хорошо, но на практике когда ты поуши в работе проще накостылять функцию с 10 аргументами, проверить что твоя задумка работает а потом в свободное время структурировать по человечески
Аноним 26/04/18 Чтв 15:00:44  1180045
>>1180043 (OP)
Твои бы слова да моим легаси-макакам в уши, которые в конструктор по 12 - 20 аргументов приопихивают
Аноним 26/04/18 Чтв 15:04:36  1180047
>>1180044
>мелкобуквенный
>говнокодер
Как думаешь, почему я не удивлен?

>>1180045
Ну вон, выше как раз один такой экземпляр, лол.
Аноним 26/04/18 Чтв 15:07:43  1180050
>>1180043 (OP)
>Назовите хоть один пример функции, которой нужно принимать >=3 аргументов, и я поясню, почему вы неправы и пишете говнокод.

ssize_t write(int fildes, const void *buf, size_t nbytes);
Вперед.
Надеюсь ты знаешь, чем отличается функция от метода.
Аноним 26/04/18 Чтв 15:09:15  1180053
>>1180043 (OP)
>Назовите хоть один пример функции, которой нужно принимать >=3 аргументов, и я поясню, почему вы неправы и пишете говнокод.

ну хотя бы вот
https://github.com/TTimo/doom3.gpl/blob/master/neo/game/physics/Physics_RigidBody.cpp

ну а вообще говоря C бояре могут на тебя спокойно поссать. Потому что за что я уважаю C за то что там пишутся офигенные функции.
Аноним 26/04/18 Чтв 15:10:53  1180054
>>1180050
Полехче, а то Оп смузи захлебнётся
Аноним 26/04/18 Чтв 15:18:39  1180057
>>1180050
Ну вообще я подразумевал разговор о высокоуровневых языках, а не о всяких там портабельных ассемблерах.

Но даже сишнику должно быть очевидно, что на самом деле эта функция принимает два аргумента: файл и (bounded) буфер, который в этот файл нужно записать. И возвращает файл, кстати. Собственно, в расте, например, сигнатура у этой функции именно такая.
Аноним 26/04/18 Чтв 15:19:59  1180059
>>1180053
>ну хотя бы вот
Укажи конкретную функцию, которая тебе нравится, не буду же я за весь файл пояснять.

>C бояре
Отличная шутка, братан!
Аноним 26/04/18 Чтв 15:23:53  1180062
>>1180059

https://pastebin.com/yHhcDsr1

ну ладно просто признай что в больших сложных проектах хипстерские смехуёчки пока не работают
Аноним 26/04/18 Чтв 15:33:30  1180067
>>1180043 (OP)
>пишете
Шкальник не палится.

>Назовите
curry, zipWith, if, foldr/foldl ... (трёхаргументные) - самые очевидные. Тысячи их. Можно начать с необозримого зоопарка многоаргументных комбинаторов. Если не считать вообще все термы одноаргументными в смысле каррирования или раззложения по CL-базису. Что, разумеется, глупо. Кроме того, такая интерпретация не имеет силу в случе согласованного разбора нескольких термов алгебраических типов.
Аноним 26/04/18 Чтв 15:34:21  1180068
>>1180062
Ну там вообще адский говнокод: t вовсе не используется, derivatives - это output param, rigidBody разнесен на два параметра (с даункастами из voidptr, олололо). Не вижу смысла всерьез это обсуждать. Любому очевидно, что это унарная функция.

>хипстерские
Значение знаешь?
Аноним 26/04/18 Чтв 15:41:16  1180079
>>1180067
>Шкальник не палится.
К чему ты это спизданул, наркоман?

>curry
Значение знаешь, дебилушка? Это унарная функция. Алсо, в *мл все функции унарные, если уж на то пошло, но я этот - чисто технический - момент в дальнейшем опускаю.

>zipWith
Это комбинатор. Из (a b -> c) делает ([a] -> [c]). Отличная иллюстрация моего поинта, кстати.

>foldr/foldl
Это комбинатор. Из (a b -> a) делает (a -> a). Отличная иллюстрация моего поинта, кстати.

>if
>2018
Если тебе по какой-то причине так нужен иф, то разделяй его на then-часть: (Bool, a -> Maybe a) и else-часть: (Maybe a, a -> a).
Аноним 26/04/18 Чтв 15:42:11  1180080
Макаба съела [ b ] в двух местах, нутыпонел.

быстрофикс
Аноним 26/04/18 Чтв 15:54:16  1180088
>>1180079
>К чему ты это спизданул, наркоман?
К тому, что ты не осилил даже орфографию школьного курса.
>>curry
>Значение знаешь, дебилушка?
Значение чего?
>Это комбинатор
>Это комбинатор
Так я о том и говорю.
>Если тебе по какой-то причине так нужен иф, то разделяй его на then-часть: (Bool, a -> Maybe a) и else-часть: (Maybe a, a -> a).
Точно. Так и есть. Шкальник.

Я же как раз написал, что это - многоаргументные фунции 'по модулю' каррирования. А считать их в самом деле одноаргументными - максимально глупо. Что особенно заметно на примере функций согласованного разбора.
Аноним 26/04/18 Чтв 15:54:35  1180089
>>1180079
>К чему ты это спизданул, наркоман?
К тому, что ты не осилил даже орфографию школьного курса.
>>curry
>Значение знаешь, дебилушка?
Значение чего?
>Это комбинатор
>Это комбинатор
Так я о том и говорю.
>Если тебе по какой-то причине так нужен иф, то разделяй его на then-часть: (Bool, a -> Maybe a) и else-часть: (Maybe a, a -> a).
Точно. Так и есть. Шкальник.

Я же как раз написал, что это - многоаргументные фунции 'по модулю' каррирования. А считать их в самом деле одноаргументными - максимально глупо. Что особенно заметно на примере функций согласованного разбора.
Аноним 26/04/18 Чтв 16:00:50  1180092
>>1180057
> И возвращает файл, кстати
Нет.

>высокоуровневых языках,
Ok, вот сишарп, чтение из сокета
public IAsyncResult BeginReceive(
byte[] buffer,
int offset,
int size,
SocketFlags socketFlags,
out SocketError errorCode,
AsyncCallback callback,
object state
)
Аноним 26/04/18 Чтв 16:06:16  1180098
>>1180043 (OP)
функция которая складывает 20 чисел:
foo(a1,a2,a3,a4,...,a20):
return a1+a2+a3+a4+..+a20
Попробуй сделать ее с 0, 1, 2 аргументами
Аноним 26/04/18 Чтв 16:07:06  1180102
Ну давай оп. Есть функция проектирующая вектор, на заданную плоскость вдоль заданного же вектора.
Очевидно, аргументов необходимо три: плоскость на которую проектируем, вектор, задающий направление, вдоль которого проектируем и собственно проектируемый вектор.
Хочешь не хочешь, а аргументов в общем случае три. Можно конечно исхитриться, и порождать сначала оператор проектирования на заданную плоскость вдоль заданного направления. Но это как по мне хреновая затея. Как по мне, более правильно порождать эти операторы в случае их надобности каррированием исходной трёхаргуметной функции.
Аноним 26/04/18 Чтв 16:12:16  1180105
>>1180098
Ты даун? Передавай в функцию массив чисел.
Аноним 26/04/18 Чтв 16:16:31  1180110
>>1180057
Ну ты и поехавший, однако. Я зашел в тред, думаю присоединюсь, а тут в самом деле какой-то смузихлеб решил патраллить но внезапно сосет хуи в прямом эфире.
Аноним 26/04/18 Чтв 16:18:38  1180111
>>1180102
ну таких примеров в графике тысячи. Опчик чёто поспешил выступить с сим смелым заявлением. Вот к чему приводит непомерное смузихлёбство.
Аноним 26/04/18 Чтв 16:20:39  1180112
>>1180088
>К тому, что ты не осилил даже орфографию школьного курса.
Просвещайся, мань: https://ru.wiktionary.org/wiki/%D0%BF%D0%B8%D1%81%D0%B0%D1%82%D1%8C#%D0%BF%D0%B8%D1%81%D0%B0%CC%81%D1%82%D1%8C

>Значение чего?
Значение curry. Попробуй описать ее смысл на естественном языке. Curry - это HOF, которая принимает одну функцию с определенными свойствами и возвращает другую функцию с другими свойствами. Алсо, более логичным бы было имя pack (и unpack). Pack берет бинарную функцию и превращает ее в униарную (от тапла); unpack берет унарную (от тапла) функцию и превращает ее в бинарную. Все просто и понятно.

>Так я о том и говорю.
Так твои функции как раз не комбинаторы, ибо в них есть сабэкспрешны со свободными переменными.

>Точно. Так и есть. Шкальник.
Один раз ты уже обосрался, на этот поинт по теме тебе тоже ответить нечего. Мне остается только снисходительно пожать плечами.

>А считать их в самом деле одноаргументными - максимально глупо
Гхм, перечитай мой предыдущий пост. Я надеюсь, что ты видишь разницу между
((a b -> a) -> (a [ b ] -> a))
и
(a -> b -> a) -> a -> -> a
в контексте этого разговора. Если нет, уточняю: обыкновенно фолд воспринимается как функция трех аргументов над (условно) списком. Попробуй ее объяснить естественным языком ее в таких терминах. Мой поинт в том, что Ъ-смысл фолда раскрывается, если логически смотреть на него как на комбинатор функций. Тогда одного взгляда на тип достаточно, чтобы интуитивно понять, что эта функция делает. В итоге получаем, что такой подход одновременно и более интуитивный\естественный, и более простой технически.
Аноним 26/04/18 Чтв 16:21:46  1180113
>>1180092
>Нет.
Пидора ответ.

>чтение из сокета
Я надеюсь, что это неудачная шутка, анон. Посмеялся, типа.

>>1180098
В ньюфаг-тред сбрызни.
Аноним 26/04/18 Чтв 16:22:51  1180114
>>1180110
>Я зашел в тред
Выйди обратно, у тебя недостаточно фундаментальных знаний для участия в дискуссии.
Аноним 26/04/18 Чтв 16:25:19  1180116
>>1180114
Спасибо, ты тоже хуй.
Аноним 26/04/18 Чтв 16:28:38  1180118
>>1180102
Это хороший пример, да. Я для себя решил, что в подобных случаях лучше все же избегать каррирования, и использовать вместо этого именованные аргументы (ну, рекорды\таплы в общем случае). Почему?

Потому что логически твоя функция все-таки имеет вид (t x -> t). Ты берешь вектор и возвращаешь некую производную от этого вектора. То есть в общем случае ты хочешь иметь возможность делать композицию операций над этим вектором. Поэтому логично написать (в псевдо-ооп синтаксисе): vec.project(to: a-plain, along: a-vec).

В смолтоке именованые аргументы были частью имени функции. Я долго присматривался к этому, но в итоге все-таки для себя решил, что лучше иметь легкий синтаксис для structural typing'а и компилятор, гарантирующий элиминацию литералов структур\рекордов. В итоге получается, опять же, и более читабельно, и технически более просто и единообразно.
Аноним 26/04/18 Чтв 16:33:20  1180121
>>1180118
>vec.project(to: a-plain, along: a-vec).
это хуевая идея по многим причинам.
основная то что ты прячешь функционал который по хорошему надо выносить в оператор в какой то класс. А это ебатня с наследованием итк итк и вообще усложение ради упрощения
Аноним 26/04/18 Чтв 16:34:30  1180122
>>1180121
Съеби из треда, пожалуйста. Ты не понимаешь, о чем идет речь, и поэтому только засоряешь эфир комментариями совершенно мимо кассы. Ничего личного.
Аноним 26/04/18 Чтв 16:37:29  1180124
>>1180122
да я сам пожалел что это написал.
Всё съёбываю обосааный и обосраный
Аноним 26/04/18 Чтв 16:40:09  1180125
>>1180112
>Просвещайся, мань: https://ru.wiktionary.org/wiki/%D0%BF%D0%B8%D1%81%D0%B0%D1%82%D1%8C#%D0%BF%D0%B8%D1%81%D0%B0%CC%81%D1%82%D1%8C
Извини. Я промахнулся. Ты прав.
Аноним 26/04/18 Чтв 16:47:52  1180135
>>1180112
>берет бинарную функцию и превращает ее в униарную
Ничего она ни во что не превращает. curry x y z = x (y, z)
Аноним 26/04/18 Чтв 16:49:02  1180136
Позиционных аргументов — поддерживаю.
Именованных можно сколько угодно.

fn(name='John', surname='Smith', phone='333', address='NewYork', etc etc
Аноним 26/04/18 Чтв 16:49:55  1180138
>>1180112
>ибо в них есть сабэкспрешны со свободными переменными.
Где?
Аноним 26/04/18 Чтв 16:54:22  1180142
>>1180135
curry : ((a b) -> c) -> a -> b -> c
= ((a
b) -> c) -> (a -> b -> c)
мммкей?

>>1180125
Принято. Проехали.

>>1180124
Ну, в рид-онли можешь остаться, лол. В обычном инфиксном (как a+b, только вместо плюса - project) синтаксисе это будет:
vec project {to: a-plain; along: a-vec}

>>1180136
Да, но весь поинт в том, что именованные аргументы - никакие не аргументы, а обычные таплы\рекорды. То есть именно аргументов остается ровно два.

>>1180138
Ну они же каррированные, анон.
Аноним 26/04/18 Чтв 16:54:50  1180144
Ебаная макаба.

curry : ((a,b) -> c) -> a -> b -> c
= ((a,b) -> c) -> (a -> b -> c)
Аноним 26/04/18 Чтв 17:02:07  1180146
>>1180142
>Ну они же каррированные, анон.
Так в Λ и CL все многоаргументные термы типизируются каррированно. Но понимаются они всё-равно как многоаргументные. В общем, это зависит от того, как считать аргументы, как это определить. Но считать их в смысле каррированности - очень глупо.
Аноним 26/04/18 Чтв 17:02:53  1180148
top ebin.png (206Кб, 512x469)
http://en.cppreference.com/w/cpp/algorithm/accumulate

ОП -- тупоголовая макака, которой смузи не долили.
ща манявры пойдут.
РЕЕЕЕЕЕ Я НЕ ИМЕЛ ВВИДУ ТАКИЕ ЯЗЫКИ, ЭТА ГАВНАКОД, БЛЯ НУ МАМ СКАЖИ ИМ
Аноним 26/04/18 Чтв 17:03:32  1180149
>>1180144
Да понятно, как там скобки стоят.
Аноним 26/04/18 Чтв 17:10:17  1180152
>>1180142
>Ну они же каррированные, анон.
Так а свабодные переменные в них где?
Аноним 26/04/18 Чтв 17:11:20  1180153
>>1180152
>свабодные
fix свободные
Аноним 26/04/18 Чтв 17:24:50  1180155
>>1180146
>Но считать их в смысле каррированности - очень глупо.
Гхм, так я же и не предлагаю это делать. Просто в некоторых случаях - как, например, с fold и zipWith - естественная за неимением лучшего слова форма функции совпадает с каррированной. Но, например, для map я предлагаю бинарный тип ([a] (a -> b) -> [ b ]), а не унарный ([a] -> ((a -> b) -> ...)), нутыпонел.

>>1180149
Тогда к чему тот пост был? Думать о значении (смысле) функции в терминах ее реализации через рерайтинг - не особо полезно, имхо.

>>1180148
Разобрали еще в начале треда, le glupyshechka.
Аноним 26/04/18 Чтв 17:27:31  1180157
>>1180043 (OP)
Поиск элемента в массиве, ты маленький что ли?
Подаём в функцию указатель, размер и искомый элемент. Дада щас ты скажешь что массив нужно об'явить глобально, пошёл нахуй.
Аноним 26/04/18 Чтв 17:34:55  1180162
>>1180155
>Думать о значении (смысле) функции в терминах ее реализации через рерайтинг - не особо полезно, имхо.
Как так. Почему? Не понимаю. Как ещё можно думать о смысле функции?
Аноним 26/04/18 Чтв 17:45:10  1180169
>>1180152
Во внутренней лямбде. Короче, я понял, в чем недопонимание. Я под "комбинатором" имел в виду "суперкомбинатор", функцию вида \f.(transform f) - именно на такую реализацию нам интуитивно как бы намекает предложенная мной сигнатура для тех функций, в противоположность обычной \xs\ys\f.(...); энивей, обе формы эквивалентны, и реализация к типам никак строго не привязана, так что можете забить на эту цепочку разговора - я неудачно и некорректно выразился.

Впрочем, перечисленные функции в том же х-ле, например, комбинаторами все равно не являются, так что предлагаю в рамках этого треда вообще забить на общеупотребимое значение этого слова (ввиду его малой полезности) и под комбинатором подразумевать функцию вида ((... -> ...) -> (... -> ...)), например.
Аноним 26/04/18 Чтв 17:46:54  1180170
>>1180162
>Как так. Почему?
Ну потому что если ты думаешь о функции в терминах ее реализации, то тем самым убиваешь весь смысл существования этой функции (абстракцию).

>Как ещё можно думать о смысле функции?
Через типы.

>>1180157
Это бинарный предикат: contains? :: ([a] a -> Bool). Иди делай laba1.cpp и в ньюфаготред.
Аноним 26/04/18 Чтв 18:10:03  1180186
>>1180170
>Через типы.
Я, всё равно, не понимаю.
Терм как вычисление имеет смысл именно в системе переписывания. Типизация есть привнесение внешней логической системы для строгого рассуждения о том, что для термов возможно/невозможно/нежелательно и никак не влияет на их вычислительный смысл.
Аноним 26/04/18 Чтв 18:24:25  1180200
>>1180186
Анон, ну ты какой-то аутизм разводишь. Ты когда видишь функцию increment, думаешь о том, как она выражается в нумералах Черча? Или о том, в какой регистр на х86 записывается ее аргумент? Или все-таки о том, что эта функция увеличивает число на единицу? Типы нужны людям, чтобы нагляднее видеть, что функция делает. Вот смотришь на тип curry - и сразу видишь: она берет функцию от a,b тапла и преобразует ее в функцию от a и b. И никакого рерайтинга.
Аноним 26/04/18 Чтв 18:47:31  1180212
>>1180044
>а потом в свободное время структурировать по человечески
Нет ничего более постоянного, чем временное.
Аноним 26/04/18 Чтв 18:53:34  1180215
>>1180200
>Анон, ну ты какой-то аутизм разводишь.
Что значит? Межу прочем, не я предложил, что функции с числом аргументов >=3 не нужны.
>эта функция увеличивает число на единицу
Так. Но типизация тут не поможет.
>Типы нужны людям, чтобы нагляднее видеть, что функция делает
Не для этого. Я же написал, для чего.
Для понимания (вычислительного) смысла функции тип содержит слишком мало информации - почти ничего.
>преобразует ее в функцию от a и b
Да не преобразует он её. Я же писал уже: curry x y z = x (y, z). Ну где здесь преобразование? Что это такое, вообще?

Полагаю, количество аргументов терма T осмысленно будет определять как кратность (n) аппликации вида (T M₁ … Mₙ) для образования означиваемого терма.
Аноним 26/04/18 Чтв 19:18:41  1180218
>>1180215
>Межу прочем, не я предложил, что функции с числом аргументов >=3 не нужны.
Ну так вроде вот этот конкретный наш диалог и не имеет никакого отношения к тому предложению, разве нет?

>Так. Но типизация тут не поможет.
Конечно поможет, ведь тип имеет дескриптивное имя. "increment : Num -> Num" полностью достаточно для понимания того, что это объявление делает (инкрементирует число).

>Не для этого.
>Да не преобразует он её.
Ну ок, лол.

>Ну где здесь преобразование?
Эм, ну (curry f) возвращает функцию g соответствующего типа. autism-intensifies.png

>Полагаю, количество аргументов
Не совсем понял, к чему этот абзац. Алсо, определение выглядит кольцевым.
Аноним 26/04/18 Чтв 19:36:06  1180227
>>1180218
>дескриптивное имя
Ничего не гарантирует. В общем случае не отражает все существенные детали.
>инкрементирует число
А как именно? А может умножает на 10? А может отображает в 0? А может это id?
>Не совсем понял, к чему этот абзац.
Предположение как определить количество аргуменов терма более осмысленно, чем в духе каррирования. В случае карриования всё и так ясно. Хотелось бы понимать число аргументов функции как общее количество термов параметризующих вычисление, которое определяет терм.
>определение выглядит кольцевым.
Где?
Аноним 26/04/18 Чтв 19:52:39  1180232
>>1180043 (OP)
function getDistance(x1:int, y1:int, x2:int, y2:int):uint {}
function drawButton(x:int, y:int, buttonText:String, w:uint, h:uint):void {}
function networkConnection(host:String, port:uint, tryReconnect:Boolean):void {}
Аноним 26/04/18 Чтв 20:10:14  1180241
>>1180227
>А как именно? А может умножает на 10?
Ну, в cs у этого слова все-таки одно вполне понятное значение. В целом, лично у меня нет особого интереса продолжать разговор на эту тему, да и тред про другое.

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

>Где?
>>Полагаю, количество аргументов терма T...
>>...для образования означиваемого терма (то есть Т).
Получается, из (T M_1..M_n) у тебя образуется T. Но ты под "означиваемым" что-то другое имел в виду, очевидно. (Впрочем, опять же, не вижу смысла об этом рассуждать вне конкретного формализма.)
Аноним 26/04/18 Чтв 20:14:22  1180243
>>1180232
Все перечисленные тобой функции должны принимать структуру.
Аноним 26/04/18 Чтв 20:14:25  1180244
>>1180232
Кстати, я поражаюсь количеству вкатывальщиков, которое привлек этот тред, лол.

distance : (Point Point -> Num)
draw : (Context Widget -> Context)
Последнее это вообще какая-то шизофазия. В общем случае connect : (Config -> Connection).
Аноним 26/04/18 Чтв 20:21:19  1180249
>>1180043 (OP)
аргументы функции это конвенция передачи параметров через стек, а функция это лишь частный случай JMP.
я бы вообще сказал, что функции не нужно. только basic и goto, только хардкор.
Аноним 26/04/18 Чтв 20:23:59  1180250
>>1180249
Это такой тонкий стеб путем пародирования вконец поехавших байтоебов, лол? Неплохо, анон, оценил.
Аноним 26/04/18 Чтв 20:25:29  1180253
>>1180241
>вне конкретного формализма
Почему вне? Я предполагал системы переписывания термов: Λ или CL.
>Получается, из (T M_1..M_n) у тебя образуется T
Нет. С помощью терма T образуется "n-кратная" означиваемая аппликация вида (T M₁ … Mₙ). В отличие от неё аппликация (T M₁ … Mₙ₋₁), например, редуцируется до некоторой нормальной формы, но не до значения. Значит аргументов недостаточно.
Аноним 26/04/18 Чтв 20:48:05  1180262
>>1180241
>Ну, в cs у этого слова все-таки одно вполне понятное значение.
Сейчас бы по сигнатуре функции прозревать детали её реализации. Впрочем, если ты - телепат, никаких проблем.
>тред про другое
Согласен. Но ты же сам предложил обходиться типами для понимания смысла функций.
Аноним 26/04/18 Чтв 20:53:05  1180265
>>1180253
>Нет.
Ну я потому и написал, что ты, очевидно, имел в виду не то, что написано, см: >>1180241

>>1180262
>Сейчас бы по сигнатуре функции прозревать детали её реализации.
См.: >>1180170 и следующий пост.

>Согласен.
Ну вот и славно.

Чтобы уже точно сменить тему, предлагаю обсудить, нужны ли двухаргументным функциям first-class таплы и какой тип будет у (полифорфных по количеству аргументов) apply и compose.
Аноним 26/04/18 Чтв 21:00:14  1180268
>>1180043 (OP)
>Назовите хоть один пример функции, которой нужно принимать >=3 аргументов, и я поясню, почему вы неправы и пишете говнокод.
Point Point Point -> Plane
Поясняй.
Аноним 26/04/18 Чтв 21:04:15  1180270
15106927954080.png (121Кб, 736x736)
>>1180268
Line Point -> Plane
Аноним 26/04/18 Чтв 21:37:53  1180297
>>1180043 (OP)
Зачем 2? Любые аргументы можно заменить одним parameter object'ом.
Аноним 26/04/18 Чтв 21:48:02  1180305
>>1180297
Зачем аргументы функции вообще? Можно завести один глобальный стэк и пихать все в него.
Аноним 26/04/18 Чтв 21:58:09  1180309
.png (1469Кб, 1047x583)
Нихуя себе в треде пожарище.
Аноним 26/04/18 Чтв 21:59:25  1180310
Функции с количеством параметров отличным от одного нужны только для оптимизации (то есть чтобы не создавать кучи промежуточных каррированных функций)
Аноним 26/04/18 Чтв 22:05:14  1180312
>>1180309
Мочерок, иди нахуй.
(Автор этого поста был забанен. Помянем.)
Аноним 26/04/18 Чтв 22:09:46  1180314
>>1180297
Что угодно можно заменить (почти) чем угодно, но не всегда это имеет смысл. Бинарные функции выражают базовую идею композиции двух разных вещей. Если ты знаешь, как из соединить две вещи, то ты легко можешь обобщить это на n вещей. Алсо, попробуй сходу (без гугла!) привести пример тернарной операции из математики.
Аноним 26/04/18 Чтв 22:11:27  1180315
>>1180310
Оптимизации компилятора (и карринга в частности) не имеют никакого отношения к логической арности функций. Алсо, только что полтреда это обсуждали, лол, посмотри выше посты (и не вскрывай эту тему еще раз, пожалуйста).
Аноним 26/04/18 Чтв 22:11:52  1180317
>>1180312
>>1180309
Чет проиграл и зарепортил, разумеется.
Аноним 26/04/18 Чтв 22:26:44  1180323
>>1180317
>Чет проиграл
Вся твоя жизнь в двух словах.
Аноним 26/04/18 Чтв 22:32:57  1180325
.jpg (16Кб, 300x300)
>>1180323
Наша.
Аноним 26/04/18 Чтв 22:33:35  1180326
>>1180043 (OP)
>Назовите хоть один пример функции, которой нужно принимать >=3 аргументов
Функция, которая считает корни квадратного уравнения, например.
Аноним 26/04/18 Чтв 22:36:48  1180328
>>1180326
P(x) = \sum[k](a_k x^k). Иными словами, коэффиценты полинома задаются вектором [a_0..a_n], и квадратное уравнение - это просто частный случай при n=2.
Аноним 26/04/18 Чтв 22:47:17  1180332
>>1180328
Вместо аргументов векторы.
Аноним 26/04/18 Чтв 22:53:33  1180334
>>1180332
Чего? Не понял, что ты сказать хотел.

Если проще объяснять: функция нахождения корней многочлена принимает один аргумент - этот многочлен.
Аноним 26/04/18 Чтв 23:05:05  1180344
>>1180334
А еще можно ПРИНЯТЬ все предыдущее состояние программы.
Аноним 26/04/18 Чтв 23:11:45  1180348
>>1180344
Зачем?
Аноним 26/04/18 Чтв 23:51:27  1180362
>>1180314
> Алсо, попробуй сходу (без гугла!) привести пример тернарной операции из математики
Я не он, но что в голову сразу приходит, так это смешанное произведение векторов.
Конечно, его можно представить через скалярное и векторное произведение, но всё-таки его лучше иметь для него представление, в качестве отдельной функции о трёх аргументах.
Аноним 27/04/18 Птн 00:07:42  1180370
>>1180362
В принципе, этот пример аналогичен >>1180268: с одной стороны вроде бы и легко подобрать бинарный аналог, но с другой вроде лучше бы без него обойтись - и при этом если использовать именованные параметры, то они будут иметь имена уровня b a, b, c. Но, во-первых, тут возникает мысль, почему бы не обобщить на произвольное n; а во-вторых - в англоязычной литературе, например, обозначение (a,b,c) не используется.

Наконец, проблему бессмысленных имен в рекордах можно решить позиционными конструкторами для этих самых рекордов. Тогда:
a × b или a cross b
но
triple{a, b, c} или triple{first:a, second:b, third:c}

Можно даже заменить {} на обычные круглые скобки, и тогда вообще никто даже подвоха не заметит.
Аноним 27/04/18 Птн 00:32:25  1180375
image.png (561Кб, 959x540)
>>1180043 (OP)
> Назовите хоть один пример функции, которой нужно принимать >=3 аргументов,
найти площадь треугольника по трем точкам.
Аноним 27/04/18 Птн 00:36:10  1180376
>>1180375
Еще один, лол. Это унарная функция треугольник -> площадь треугольника.
Аноним 27/04/18 Птн 00:40:33  1180378
>>1180376
егорушка это ты? ок, тогда "создать треугольник с заданными тремя точками".
Аноним 27/04/18 Птн 00:42:10  1180379
>>1180378
Структура.
Аноним 27/04/18 Птн 01:06:36  1180383
>>1180378
Тебе бы какой-нибудь учебник по cs для старшеклассников почитать, анон.
Аноним 27/04/18 Птн 01:11:12  1180384
> Назовите хоть один пример функции, которой нужно принимать >=3 аргументов,
Вообще, таких функций море. Банально они могут родиться в ходе построения мат. модели, для которой пишем программу.
Вполне может случиться так, что у тебя есть функция, считающая что либо и имеющая вид, например
f(a, b, c, d) => c * cos(d) / a + b
Причём все параметры вполне могут быть независимы и структурно не являться частями одной сущности. Так что однозначно заявлять, что больше двух функций не надо глупо. Всегда стоит помнить о научном софте для конкретных рассчётов, в котором может родиться и не такое
Аноним 27/04/18 Птн 01:13:25  1180385
>>1180384
* двух аргументов
быстрофикс
Аноним 27/04/18 Птн 01:15:35  1180386
>>1180383
С чего ты сделал вывод что я его не читал? то что вы предлагаете хуету которая не применима в реальной жизни говорит только о том, что вы шизики из академии, не видившие реальных проектов.
Аноним 27/04/18 Птн 02:00:11  1180393
>>1180386
С этого: >>1180378

>>1180384
Анон, посмотри вот этот пост, там я по большому счету ответил на этот твой поинт: >>1180370

Любая такая функция будет естественным образом зависеть от имен аргументов. Конечно, можно и c * cos(d) / a + b написать в tacit-стиле, но... это очень мозгоебно получится если только тебя зовут не Слава, лол. Более того, над такой функцией не будет никаких естественных трансформаций аргументов типа flip : ((a,b) -> (b,a)). На самом деле, она ничем не отличается от какой-нибудь connect(host, port, timeout, onSuccess, onFailure) - разница только в том, что здесь аргументы более абстрактные, а потому им трудно дать короткие дескриптивные имена (ну не писать же arg-to-cos вместо d, в самом деле).То есть логически эта функция имеет именованные параметры (тапл\рекорд) и является унарной.
Аноним 27/04/18 Птн 06:36:23  1180413
>>1180043 (OP)
Давай, поясняй за спецификацию
developer.mozilla.org/ru/docs/Web/API/CanvasRenderingContext2D/drawImage
Аноним 27/04/18 Птн 09:53:45  1180434
>>1180043 (OP)
> Назовите хоть один пример функции, которой нужно принимать >=3 аргументов
Сложить три строки
Аноним 27/04/18 Птн 10:09:36  1180443
>>1180170
> .cpp
По определению говнокод если ты об этом.
Аноним 27/04/18 Птн 11:51:41  1180469
>>1180043 (OP)

В методах 3 параметра хватает, как правило. В функциях нет, и ты сосешь хуй.
Аноним 27/04/18 Птн 12:59:48  1180482
>>1180113
>Я надеюсь, что это неудачная шутка
>Твоя функция не функция ррряя!
А ты точно программист?
Аноним 27/04/18 Птн 13:34:36  1180491
>>1180413
Уже было.

>>1180434
concat : Str Str -> Str, дальше сам догадаешься?

>>1180443
Есть такое, да.

>>1180482
Лол, ну тогда все плохо, анон. Тебе в ньюфаготред.
Аноним 27/04/18 Птн 13:36:45  1180493
Алсо, все еще поражаюсь. Практически каждый первый ответ - вкатывальщики и прочие первый-курс-не-школота. Как от них защищаться-то? В (некоторых) других тредах такого пиздеца нет.
Аноним 27/04/18 Птн 14:36:59  1180513
>>1180043 (OP)
strncpy( char destptr, const char srcptr, size_t num )

А такой вариант?
Аноним 27/04/18 Птн 15:55:31  1180539
>>1180491
>эти маневры
тащемта программисты, внезапно, программируют компьютеры, которые выполняют какую-то работу. и, представь себе, иногда программистам действительно нужно читать данные из сокета, а не только слаживать векторы и находить площадь треугольника.
я надеюсь ты понимаешь, что жидко серишь в этом треде? твои вскукареки имеют мало отношения к профессии программирования.
Аноним 27/04/18 Птн 16:47:15  1180553
>>1180043 (OP)
>Положняк такой: функции с 3 или больше аргументами НЕНУЖНЫ.
Излишество. Каждая функция должна принимать только один аргумент, да и то неявно.
Аноним 27/04/18 Птн 16:54:14  1180557
>>1180383
Какой?
Аноним 27/04/18 Птн 16:58:41  1180560
>>1180491
>concat : Str Str -> Str,
Прощу прощения за нубский вопрос. Что значит эта запись? Что за нотация и как её расшифровывать?
>concat
Это название функции?
>Str Str
Это два аргумента?
>-> Str
Это типа возвращаемое значение?
Аноним 27/04/18 Птн 16:59:56  1180562
Зачем использовать несколько функций с двумя аргументами, если можно одну с бОльшим количеством?
Аноним 27/04/18 Птн 17:01:15  1180563
>>1180562

интырфейс сеграгатион принцып
Аноним 27/04/18 Птн 17:18:21  1180569
>>1180043 (OP)
Можно вообще без аргументов. Передавать параметры через глобальные переменные и возвращать значения через них же.
Аноним 27/04/18 Птн 17:19:45  1180572
>>1180513
В общем-то выше уже обсуждали. Вместо num+srcptr должен быть один параметр - слайс. В том же расте это так и работает.

>>1180539
Ньюфаготред тут: >>1008826 (OP)

>>1180557
Ну, рекорды даже в паскале есть, так что по идее вообще любой. Чего-то специфического для старшеклассников я посоветовать не могу, извиняй. Разве что htdp?

>>1180560
"конкат имеет тип: функция из пары (Str, Str) в Str". Нотация - обычная нотация для комплюктер сцайенс, x : t обычно означает "икс имеет тип тэ", стрелочка обычно означает функциональный тип; сравни с х-лем, например: concat :: String -> String -> String. На все остальные вопросы ответ "да".

>>1180569
Можно и срать, не снимая свитер, да.
Аноним 27/04/18 Птн 17:43:20  1180583
>>1180572
>Можно и срать, не снимая свитер, да.
Именно этим ты тут целый тред тред и занимаешься.
Аноним 27/04/18 Птн 21:48:04  1180674
>>1180572
>срать, не снимая свитер
А зачем его снимать?
Аноним 27/04/18 Птн 23:42:59  1180855
https://github.com/fantasyland/fantasy-land
освящаю этот итт тред
Аноним 27/04/18 Птн 23:45:29  1180858
>>1180098
js
[1,2,3,4,5].reduce((x, y) => x + y)
Аноним 28/04/18 Суб 00:09:19  1180871
>>1180858
У тебя функция принимает три аргумента.
Аноним 28/04/18 Суб 00:24:26  1180877
>>1180043 (OP)
(,,)
data Point = Point Float Float Float
Ну ты понел. Вот только не надо тут, что "конструкторы - это не функции".
Аноним 28/04/18 Суб 00:30:56  1180883
>>1180334
Вот только ты не сможешь написать функцию нахождения корней для произвольного полинома. А для квадратичного - можешь, и у неё тогда будет ровно три аргумента.
Аноним 28/04/18 Суб 00:36:04  1180885
>>1180155
map :: (a -> b) -> ([a] -> ) как раз естественнее в унарной форме, как и zipWith, обе лифтят функцию на уровень списков.
Аноним 28/04/18 Суб 02:38:30  1180907
>>1180057
Си так то тоже ЯП высокого уровня. То что ты не можешь двинуться дальше хелловорлда не означает, автоматически, что язык становится ассемблером.

Так что давай поясняй за memcpy, хуесос
Аноним 28/04/18 Суб 02:48:17  1180912
>>1180907
> Си так то тоже ЯП высокого уровня.
Как оно там, в 70-х?
Аноним 28/04/18 Суб 05:39:33  1180928
>>1180105
>>1180113
>>1180858
Проигал с вас. Зачем на такую очевидную толстоту отвечать?
Аноним 28/04/18 Суб 07:35:46  1180935
>>1180885
>лифтят функцию
Чего?
>уровень списков
Что это?
Аноним 28/04/18 Суб 08:47:52  1180945
Аргументы опа легко ломаются, если понять, что заворачивание множества параметров функции в структуру, написанную только для этой функции - это больший говнокод, чем их обычная передача.
Аноним 28/04/18 Суб 09:13:28  1180948
Я не в курсе, но это уже, возможно, кто-то написал. Ситуация такая: я пишу на процедурке, мне нужна функция взятия подстроки. Аргументы, соответственно, такие: строка, индекс начала, индекс конца подстроки
Аноним 28/04/18 Суб 09:23:21  1180950
>>1180948
Двух итераторов достаточно.
Аноним 28/04/18 Суб 09:59:13  1180956
>>1180950
>итераторов
Говнокодер as is.
Впрочем, что с хацкельдебила взять.
Аноним 28/04/18 Суб 10:01:03  1180957
>>1180379
Структура чего, девяти координат?
Аноним 28/04/18 Суб 15:28:21  1181053
>>1180956
>хацкельдебила
А хуй ты угадал.
Аноним 28/04/18 Суб 17:53:53  1181114
>>1180885
Всё же не стоит путать категоризацию вычисления (терма) и его параметризацию.
Аноним 28/04/18 Суб 19:00:56  1181152
>функции
Нормальные люди используют методы
Аноним 28/04/18 Суб 20:02:30  1181203
>>1180583
Как скажешь.

>>1180674
Чтобы не испачкался :3

>>1180855
>Algebraic
>JavaScript
/0

А вообще - спасибо, прикольная штука.

>>1180871
Два, ты чем читаешь?

>>1180877
Конструкторы - это не функции.

>>1180883
>ты не сможешь написать функцию нахождения корней для произвольного полинома
Численные методы не завезли?

>и у неё тогда будет ровно три аргумента.
Нет, один (полином).
Аноним 28/04/18 Суб 20:10:07  1181208
>>1180885
Тоже хороший поинт. Но все-таки логичнее тогда давать ей более общий тип (х-льский fmap). Опять же, тут можно смотреть на мап как на функцию от списка или как на функциональный комбинатор. Первое выглядит лучше, если предполагается ад-хок полифорфизм. А второе выглядит более APL-но.

Алсо, можно же вообще все функции над последовательностями рассматривать как (хикковские) трансдьюсеры, тогда естественным образом это все будут функциональные преобразования.
Аноним 28/04/18 Суб 20:13:54  1181213
>>1180907
Второй абзац прочитать мсье лабодел не осилил?

>>1180935
Ну представь, что у тебя есть тип t и функция, работающая с этим типом - например, (t -> t). И тут у тебя ВНЕЗАПНО появляется тип f<t>, зависящий от t. И тебе нужно твою функцию заставить работать с этим новым типом. То есть было (t -> t), а нужно (f<t> -> f<t>). То есть ты ее как бы "поднимаешь" (лифтишь) на уровень выше. Makes sense?
Алсо, не путать с лямбда-лифтингом.
Аноним 28/04/18 Суб 20:18:30  1181218
>>1180948
Вот смотри. У тебя есть вызов: (substr "foo" 0 1). Что такое 0? Что такое 1? Какие-то беспонтовые magic numbers, хуй поймешь что они значат, пока в документацию не посмотришь. А лучшая документация, как известно, - та, которую не нужно писать. Так что вне зависимости от темы этого треда, подобные функции всегда должны принимать именованные аргументы: "foo".substr(from: 0, to: 1). Ну и чисто случайно тогда получается, что функция принимает как раз два аргумента (строку и слайс-to-be) и имеет вид (t x -> t).

Алсо, перед тем как ты скажешь ОЧИВИДНА ЖИ НУ СЛЕВА НАПРАВО ЖИ ЗНАЧИТ СПЕРВА ИНДЕКС СТАРТА ПОТОМ ИНДЕКС КОНЦА, я напомню, что евреи - самый могущественный народ в мире, на минуточку - пишут справа налево.
Аноним 29/04/18 Вск 09:09:49  1181390
Не понимаю месседжа ОП-поста. Очевидно, что любую функцию f(x,x1,x2...) можно превратить в функцию f(struct), где struct = {x1,x2..}.
Но что поменяется от этой словесной эквилибристики? Логика работы? Память? Нихуя не поменяется, это просто жонглирование словами. Это такой же мусор как ифлесс дурачки. Соотвественно, ОП - пидор, а его мать шлюха. /тред
Аноним 29/04/18 Вск 09:21:41  1181394
>>1181390
>ифлесс дурачки
Так это он и есть >>1180079
Аноним 29/04/18 Вск 10:16:26  1181407
Untitled.gif (9Кб, 494x258)
385px-YaoMingre[...].jpg (60Кб, 385x599)
>>1180043 (OP)
Пфффф
Аноним 29/04/18 Вск 14:26:23  1181540
>>1181390
>в функцию f(struct), где struct = {x1,x2..}.
Я не это предлагаю. Постарайся читать внимательнее, прежде чем отвечать.

>это просто жонглирование словами
As a side note, все программирование да и вся математика, кстати, тоже состоит исключительно из синтаксических преобразований, то есть "жонглирования словами".

>>1181394
"Ифлесс дурачком" является, например, Боб Харпер - надеюсь, не нужно объяснять, кто это такой. Кроме того, иф - это просто одна специфическая функция, в которой нет ничего фундаментального, так что нет никакого смысла заострять на ней внимание. С тем же успехом можно говорить о "гото-лесс дурачках", например.

>>1181407
Ну откуда столько лабоделов с процедурщиной головного мозга лезет? Process - это рекорд, не нужно никаких функций для его создания.

Кроме, быть может, бинарной функции ассоциации пары label+value к имеющемуся рекорду, если наща система типов это поддерживает.
Аноним 29/04/18 Вск 14:32:51  1181544
>>1181540
>Ифлесс дурачком" является, например, Боб Харпер
Аппеляция к авторитету не аргумент.
Аноним 29/04/18 Вск 14:39:37  1181551
>>1181540
>надеюсь, не нужно объяснять
Нужно.
Аноним 29/04/18 Вск 14:41:50  1181553
>>1181540
>математика, кстати, тоже состоит исключительно из синтаксических преобразований, то есть "жонглирования словами"
С этого и надо было начинать.
Аноним 29/04/18 Вск 14:44:52  1181556
>>1180043 (OP)
Функции больше чем с 1 аргументом не нужны.
Для передачи нескольких значений существуют списки/структуры/кортежи.
Аноним 29/04/18 Вск 15:06:45  1181562
>>1181540
>Я не это предлагаю.
>Все функции должны принимать либо 0 аргументов (тогда это и не функции вовсе), либо 1 аргумент (унарные функции), либо 2 аргумента (бинарные функции). Все остальное нужно запретить (code convention'ом или компилятором).

В глаза ебешься, собственно ничего необычного. ВЕсь тред маневров и порваной сраки ОПа-хуя.
Аноним 29/04/18 Вск 15:45:17  1181585
>>1181544
А о чем спор-то? Не вижу утверждений для опровержения, кроме "ррряя ифлесс-дурачок))".

>>1181551
http://existentialtype.wordpress.com/

>>1181553
Ну это любому совершеннолетнему посетителю этого раздела должно быть очевидно, разве нет?

>>1181562
>любую функцию f(x,x1,x2...) можно превратить в функцию f(struct)
>Все функции должны принимать либо 0 аргументов (тогда это и не функции вовсе), либо 1 аргумент (унарные функции), либо 2 аргумента (бинарные функции).
Если ты не видишь разницы между этими двумя пропозишнами, то тебе в /me, анон.
Аноним 29/04/18 Вск 15:49:16  1181589
>>1181556
Кортежи - антипаттерн. Списки - антипаттерн.

Вместо первых всегда должны использоваться структуры, а вторые попросту ненужны.

Если же ты предлагаешь все-таки использовать кортежи и арифметику, например, типизировать как + :: ((Num, Num) -> Num), то у тебя получаются функции, которые только технически имеют (якобы) 1 аргумент, а на самом деле являются многоаргументными (выше по треду мы этот нюанс уже обсудили, можешь глянуть). И в таком случае лучше предпочесть карринг кортежам энивей.
Аноним 29/04/18 Вск 15:53:18  1181593
>>1181585
>Ну это любому совершеннолетнему посетителю этого раздела должно быть очевидно, разве нет?
Тебе видней. Отправляйся в /math/, там тебе ещё видней станет.
Аноним 29/04/18 Вск 15:55:23  1181595
>>1181589
>Кортежи - антипаттерн. Списки - антипаттерн.
Одно утверждение офигительней другого. Доказывать их ты, конечно, не будешь?
Аноним 29/04/18 Вск 16:59:05  1181632
>>1181593
>Тебе видней.
Тут не поспоришь, да.

>>1181595
Кортежи - это рекорды с имплиситными именами. Режем их бритвой Оккама. Списки - это вообще артефакт из 80-ых; вместо них давным-давно используются tree-like структуры данных. Stelee разбирал эту тему, погугли "cons cosidered harmful" или что-то в таком духе.
Аноним 29/04/18 Вск 17:04:14  1181639
>>1181585
>Если ты не видишь разницы между этими двумя пропозишнами, то тебе в /me, анон.
Тебе просто неприятно, что тебя обоссали даже на уровне голой теории.
В изначальном утверждении не было ограничений на типы аргументов функции, соответственно структура - валидный аргумент, поэтому каждая функция может быть сведена к 1-3 параметрической и твое утверждение рассыпается как карточный домик.
Аноним 29/04/18 Вск 17:05:06  1181640
>>1181632
>Режем их бритвой Оккама
Почему не рекорды?
Аноним 29/04/18 Вск 17:07:14  1181641
>>1181632
>структуры данных
Выплюнь гадость.
Аноним 29/04/18 Вск 17:12:05  1181644
>>1181641
Братишка, я тебе Oberon принес. Ссылки, да с такими-то nil'ами, алгол 68 сосет!
Аноним 29/04/18 Вск 17:14:04  1181646
>>1181639
Почитай начало треда.

>>1181640
Потому что рекорды заменяют кортежи, но не наоборот.

>>1181641
М?

>>1181644
>Братишка, я тебе Oberon принес.
Выплюнь гадость. ^_^
Аноним 29/04/18 Вск 17:18:17  1181648
>>1181646
>М?
Структуры данных - это муть, эрзац топосов для неосиляторов. Даже сочетание этих слов - кромешное недомыслие.
Аноним 29/04/18 Вск 17:21:15  1181649
>>1181646
>но не наоборот
Почему, это?
Аноним 29/04/18 Вск 17:25:36  1181652
>>1181648
И по совместительству это устоявшийся термин с понятным всем значением. Если ты хочешь заменить "tree-like структуры данных" более удачным выражением, то можешь не стесняться, а просто взять и заменить.

>>1181649
Имен нет.
Аноним 29/04/18 Вск 17:30:57  1181654
>>1181652
>понятным
Хрен там плавал. Как и любая словемная муть - для иллюзии понимания и успокоения сомнений.
Аноним 29/04/18 Вск 17:32:43  1181655
>>1181652
>Имен нет.
Какая .. жаль.
Аноним 29/04/18 Вск 18:19:55  1181674
Вот была функция y = f(x,y,z) - плохая уебищая, громоздкая запись. Быдлоговнокод. Так писать не надо

А вот y = f(x, g(y, z)) - совсем другое дело. Красивый, великолепный, замечательный код. Только выиграли, ввели функцию g( y, z) и избавились аж от двух аргументов x, y, добавив всего-лишь промежуточную функцию g.
Господи, до чего же функциональное программирование прекрасное и элегантное.
Аноним 29/04/18 Вск 19:15:07  1181715
>>1181674
При чем тут функциональное программирование? Алсо, какой-то идиотский пример. Почитай тред, выше уже разбирали кучу примеров.
Аноним 30/04/18 Пнд 17:18:20  1182113
>>1181674
Адекват итт
Аноним 30/04/18 Пнд 18:21:12  1182149
>>1182113
Семен итт
Аноним 30/04/18 Пнд 19:41:01  1182186
Мойша Шейнфинкель рад этому треду.
Аноним 30/04/18 Пнд 19:42:18  1182189
>>1182186
inb4 каррирование
Аноним 30/04/18 Пнд 19:50:26  1182196
>>1182189
Предлагаю в честь солидарности с нашим соотечественником сгноенным в подвалах большевиками, кстати впредь использовать термин "мойшинг". Ну или хотя бы "шейнфинкельшинг".
Аноним 30/04/18 Пнд 20:14:04  1182205
>>1182196
Увы, момент потерян, надо было это делать в конце 90х, начале нулевых, пока программистская терминология формировалась. А так - мойшинг отличное трололо.
Аноним 30/04/18 Пнд 20:26:04  1182213
>>1182205
>в конце 90х, начале нулевых, пока программистская терминология формировалась
Ты хотел сказать пока декоммунизация еще была актуальна?

>А так - мойшинг отличное трололо.
So be it! К тому же ассоциаций с запахами немытых индусов не вызывает, в отличие от.
Аноним 02/05/18 Срд 16:07:53  1183170
Странно, что никто не упомянул про put(map, key, val)
Аноним 11/06/18 Пнд 00:12:51  1207512
Кажется, мы стали забывать...
Аноним 11/06/18 Пнд 00:56:46  1207526
>>1180043 (OP)
>Назовите хоть один пример функции
заливка прямоугольника по координатам, сосни манька
Аноним 11/06/18 Пнд 19:14:26  1207887
>>1207526
draw (Context, Shape) -> Context
Аноним 14/06/18 Чтв 13:08:01  1209697
>>1180043 (OP)
Какая-нибудь fold(list, callback, initialValue);
Аноним 14/06/18 Чтв 15:10:35  1209808
>>1180043 (OP)
>Назовите хоть один пример функции, которой нужно принимать >=3 аргументов,

get_something_by_key(collection, key, default)

inb4 завернуть в монаду Maybe
Аноним 14/06/18 Чтв 16:17:33  1209844
>>1209697
Выше обсуждали, поищи в треде по "fold".

>>1209808
>завернуть в монаду Maybe
Очевидно, не правда ли?
Аноним 14/06/18 Чтв 16:42:37  1209857
>>1180043 (OP)
Функция должна принимать ровно один аргумент, иначе это и не функция вовсе
Аноним 14/06/18 Чтв 16:58:37  1209861
>>1209844
>Очевидно, не правда ли?
А нахуя? Потом накатывать maybe(default, get_something(collection, key)) ? Дольше же писать.

А тут от другого анона вопрос похожий, что скажешь? >>1183170
Аноним 14/06/18 Чтв 17:15:34  1209870
>>1180050
>чем отличается функция от метода.
ничем, удаляй паскаль
Аноним 14/06/18 Чтв 17:52:19  1209888
>>1209861
>Дольше же писать.
Я не вижу смысла ради экономии пары символов нарушать принцип single responsibility. Алсо, у тебя какая-то хуйня написано, на самом деле это выглядит как-то так: val = get(coll, key) || default.

>вопрос похожий, что скажешь?
Мапы - это последовательности пар ключ-значение, по идее. Так что put(m, [k v]). Хотя наверное лучше все-таки использовать описанные выше именованные аргументы, то есть в итоге будет что-то вроде m.put(key: "foo", val: 42). Есть еще предложения?
Аноним 14/06/18 Чтв 20:29:52  1209959
>>1209888
>put(m, [k v])
Почему бы тогда все аргументы в тапл не завернуть?
>m.put(key: "foo", val: 42)
Тут все равно остается три аргумента: m неявный аргумент.

>Есть еще предложения?
А смысл? Если в принципе можно всё в таплы/рекорды попихать и быть довольным с функцией одного аргумента? Даже двух не надо.
Аноним 14/06/18 Чтв 21:26:39  1209990
>>1209959
>Почему бы тогда все аргументы в тапл не завернуть?
Потому что это тупо и бесполезно, выше по треду подробно обсуждалось.

>Тут все равно остается три аргумента: m неявный аргумент.
Здесь два аргумента: m<K,V> и {key: K, val: V}.

>А смысл?
Опять же, см. выше по треду.
Аноним 15/06/18 Птн 00:03:38  1210133
>>1209990
Есть такая функция:
school_dot m1 m2 a = m1 m2 cos a
Аноним 15/06/18 Птн 00:33:07  1210140
>>1209870
В паскале процедуры
Аноним 16/06/18 Суб 12:42:05  1210897
К А Р Р И Р О В А Н И Е
А
Р
Р
И
Р
О
В
А
Н
И
Е
Аноним 16/06/18 Суб 17:42:19  1211130
>>1210133
Что?

>>1210897
Ненужно.
Аноним 16/06/18 Суб 20:11:06  1211248
А если у меня аргументов два-три, но один из них это структура на 5 членов?
Аноним 16/06/18 Суб 20:49:34  1211293
>>1211248
Садись на все.
Аноним 16/06/18 Суб 21:59:54  1211338
printf("Автор этого поста - %s. Кто он? %s. Что он сосет? %s.", op, pidor, huj);
Аноним 16/06/18 Суб 22:01:31  1211340
drawRect(int x, int y, int width, int height);
Аноним 16/06/18 Суб 22:10:30  1211349
>>1211248
Это нормально, если твоя структура действительно представляет собой какую-то конкретную сущность.

>>1211338
Два аргумента - строка и список подстановок. Откуда в этом треде столько дебилов-вкатывальщиков?

>>1211340
draw : (Context, Shape -> Context). Rect - это рекорд или класс. Зачем ты вылез из ньюфаготреда?
Аноним 16/06/18 Суб 22:22:28  1211367
>>1211349
А ты из под шконки вылези, Дейкстра недоделанная. Похуй, что неудобно, зато 3 аргумента.
Аноним 16/06/18 Суб 22:23:36  1211368
>>1211349
>какую-то конкретную сущность.
Человек не видел WIN API...
Аноним 16/06/18 Суб 22:24:47  1211371
Конструктор вектора в 3D
Аноним 16/06/18 Суб 22:29:34  1211373
>>1211367
>зато 3 аргумента.
Оп-пост хотя бы прочитай, школотрон.

>>1211368
Ну почему, говнища я много всякого повидал.

>>1211371
Конструктор. А речь о функциях. Обсуждали сотню раз выше по треду.
Аноним 16/06/18 Суб 22:31:35  1211375
>>1211373
>Конструктор. А речь о функциях.
Конструктор и есть функция, вылезай из своих маняабстракций, растоман.
Аноним 16/06/18 Суб 22:34:47  1211377
>>1211373
>Оп-пост хотя бы прочитай, школотрон
Боже, я не заметил, что ты пишешь, что функции даже на 3 аргумента не нужны. Ору, конечно, гений кода.
Аноним 16/06/18 Суб 22:44:33  1211384
>>1211377
>>1211375
-> >>1008826 (OP)
Аноним 16/06/18 Суб 22:48:10  1211389
>>1211384
Всегда удобно не ответить по сути и выдать загадочную хуйню.
Аноним 17/06/18 Вск 12:33:14  1211616
>>1180043 (OP)
Покажи мне хоть одну баблиотеку, в которой ббольше 100 строк кода, и которая следовала бы этим правилам.
Нашел? ок. Теперь найди такой фрейцмворк,адепт теор. программирования.
** дурак 17/06/18 Вск 12:40:57  1211623
Зачем тебе функции?
Тебе нужно только сплочение и патриотизм.
(И ещё начальная школа и тюрьма.)
Аноним 17/06/18 Вск 12:46:20  1211631
>>1180043 (OP)
def print(*args, sep, end):
sys.stdout.write(sep.join([arg for arg in args])+end)
Самое лёгкое что вспомнил, лол
Аноним 17/06/18 Вск 12:58:28  1211639
Ясно, что многомерный
массив можно элементарно свести к одномерному (и даже двумерность не требуется.
Но это никак не оправдывает маразматично хаявления этого субъекта.)
Аноним 17/06/18 Вск 15:19:07  1211746
Залетный из ньюфаг треда /ph/ отсылает почтенных мужей в ньюфаг тред /pr/, умилительно.
Ничего, ОП, вот окончишь второй курс и рано или поздно свыкнешься с мыслью что откровения, которые ты вычитал для себя в статье про логический позитивизм на вики совсем не откровения для взрослых людей.
Аноним 17/06/18 Вск 16:29:27  1211791
>>1211389 Всегда удобно съебать обратно в ньюфаг-тред.
>>1211616 Показал, проверяй личку.
>>1211623 Аппроприэйт подпись у тебя.

>>1211631
Параша, авторы которой не слышали про single responsibility principle. Намешали говна в кучу и рады. ЗАТО УДОБНО!!1 Ты и сам видишь, что там только бинарные функции: джойн, конкатенация, запись в поток. Если хочется иметь именно такой принт, то следует использовать именованные аргументы (выше уже обсуждали).

>>1211746
Чего, блядь? Иди таблетки прими, шизик.
Аноним 17/06/18 Вск 19:12:28  1211927
>>1211791
>Вы все говно! Говно! УУУУУ!!!! Говно! Моча!
Содержательно.
Аноним 17/06/18 Вск 19:19:41  1211936
>>1211130
>Что?
Макаба звездочки съела.
school_dot m1 m2 a = m1 × m2 × cos a
Скалярное произведение векторов же.
Аноним 17/06/18 Вск 19:22:35  1211941
>>1211927
Смотришь в книгу - видишь фигу.
Аноним 17/06/18 Вск 20:01:24  1211971
>>1211936
Скалярное произведение для двух векторов определяется вообще-то. Алсо, выше уже подробно обсуждали разные произведения векторов, почитай.
Аноним 17/06/18 Вск 20:04:10  1211972
>>1211971
Ну да. Умножаешь магнитуды двух векторов на косинус угла между ними и вуаля. Теперь покажи как эту функцию запилить с одним-двумя параметрами.
Аноним 17/06/18 Вск 20:26:04  1211990
>>1211972
https://en.wikipedia.org/wiki/Dot_product#Algebraic_definition
Аноним 17/06/18 Вск 20:37:35  1211995
>>1211990
В этой задаче вектора заданы не координатами, а магнитудами и углом. Т.е. координаты взять не откуда.
Аноним 17/06/18 Вск 23:23:38  1212082
>>1211995
А, хоспати, ты про это. Ну ты можешь либо повыебываться и принимать пару векторов и угол, либо просто использовать именованные параметры, выше это уже обсуждали в контексте математических функций.
Аноним 18/06/18 Пнд 10:15:22  1212230
>>1212082
Все ясно с твоими манёврами.
Аноним 18/06/18 Пнд 17:26:11  1212606
>>1212230
Совсем шизик?
Аноним 21/06/18 Чтв 22:19:16  1214851
>>1212606
Ты чтоли оп треда про мейби списки? Тогда всё ясно.
Аноним 21/06/18 Чтв 23:55:47  1214912
>>1180043 (OP)
>Назовите хоть один пример функции,
Найти медиану множеств.
Аноним 21/06/18 Чтв 23:57:04  1214913
>>1214912
https://en.wikipedia.org/wiki/Median_algebra
Вот это, а то нагуглишь не то.
Аноним 22/06/18 Птн 00:11:32  1214915
1460626904968112.jpg (4Кб, 130x100)
ОП пытается сказать, что не бывает таких ситуаций, когда необходимо послать три аргумента, я все правильно понял? Нет, ну вообще, если мы мыслим а том,о можно сделать, а не о том, что следовало бы, можно вообще в том же c# переписать ВСЕ функции под один аргумент, передавая массив []object, вот вообще без проблем. Код пишут для того, чтобы легче его поддерживать было. Компилятору по большому счёту до лампочки в большинстве случаев, два или три.
Аноним 22/06/18 Птн 00:30:29  1214925
>>1214915
ОП путает математические функции с программированием
Аноним 22/06/18 Птн 00:38:56  1214928
Ждем от ОПа reduce с двумя или одним аргументом.
Аноним 22/06/18 Птн 09:29:00  1215048
>>1214928
Скажу за ОПа - заверни все аргументы в рекорд.
Аноним 22/06/18 Птн 10:19:09  1215054
>>1215048
Ага - больше 2-х аргументов нельзя, а тапл с 100 элементов - норм. Тапл же один.
Логика!
Аноним 22/06/18 Птн 10:34:31  1215060
>>1180043 (OP)
Объединение разных цепочек в rxjava.
Аноним 22/06/18 Птн 11:26:30  1215101
>>1180043 (OP)
Комбинатор S

/thread
Аноним 22/06/18 Птн 11:33:12  1215106
>>1180092

> >высокоуровневых языках,
> Ok, вот сишарп, чтение из сокета
> public IAsyncResult BeginReceive(
> \tbyte[] buffer,
> \tint offset,
> \tint size,
> \tSocketFlags socketFlags,
> \tout SocketError errorCode,
> \tAsyncCallback callback,
> \tobject state
> )

Ебашу класс с полями buffer offset size socketflags errorcode callback, заполняю его и отправляю в метод как первый параметр, обжектстейт будет как второй
Хуле нам, далбаебам
Аноним 22/06/18 Птн 17:20:52  1215329
>>1214851 Тебя и там шизиком назвали, лол?
>>1214913 Выше уже обсуждали аналогичные случаи.

>>1214915
О том и речь, что если аргументов больше 2, то стоит ради читаемости и всего святого, что есть на этой планете, использовать именованные аргументы, как смолток-диды завещали.

>>1214928
Выше уже подробно обсуждали, почитай тред.

>>1215060
Зачем там больше двух аргументов?

>>1215101
Ненужно, ведь есть cake.
Аноним 22/06/18 Птн 18:19:40  1215355
>>1180043 (OP)

На архитектуре AMD64 Micosoft ABI- три аргумента для extern "C" функций , по числу аргументов, передающихся в регистрах.

Для методов классов - два ааргумента, потому что один регистр отъедает this.


/thread

Аноним 22/06/18 Птн 18:24:28  1215362
>>1215355
Байтоеб в треде, все в регистры.
Аноним 23/06/18 Суб 15:00:15  1215785
>>1215329
>Ненужно
Ты скозал?
Аноним 25/06/18 Пнд 11:59:34  1217090
>>1215329
Разные источники данных -> разные цепочки -> их надо каким-то образом объединить -> несколько аргументов функции
Аноним 25/06/18 Пнд 20:46:36  1217335
>>1215785
Дя ^_^

>>1217090
То есть про списки ты не слышал, так?
Аноним 05/07/18 Чтв 19:58:24  1223186
>>1180043 (OP)
Всегда работаешь с указателями на структуры
@
Никаких проблем
мимо-пишу-драйвера-под-линукс
Аноним 05/07/18 Чтв 21:12:11  1223228
>>1180043 (OP)
C ncruses когда-нибудь работал?
Там функции типа
void print_title(WINDOW ⁕win, int starty, int startx,
int width, char ⁕string, chtype color);

в порядке вещей.

Аноним 08/07/18 Вск 23:35:11  1224787
>>1223228
Ты еще вонючий WinAPI с его монструозными функциями вспомни - это сделает ОПа неправым что ли?
Аноним 09/07/18 Пнд 00:08:57  1224796
>>1180043 (OP)
Функций с более чем 1 аргументом просто не бывает.

N аргументов - это, на самом деле - один N-tuple.

Так что ОП-хуй.

/thread
Аноним 09/07/18 Пнд 00:46:19  1224815
>>1223186
Уважуха мужикам!

>>1223228
Да я много с каким говнокодом работал, но тред-то не про это.

>>1224796
>N аргументов - это, на самом деле - один N-tuple.
Про карринг мойшинг мсье, видимо, не слышал.
Аноним 09/07/18 Пнд 00:46:20  1224816
>>1224796
Когда разберешься чем tuples отличаются от currying, тогда и заходи.
Аноним 09/07/18 Пнд 02:34:56  1224859
>>1224816
>>1224815
Карринг, хуярринг - какое это сюда имеет отношение вообще?

Если вы не поняли, о чём речь, попробуйте понять.

Аноним 09/07/18 Пнд 02:48:18  1224862
Ебал ваш рот, тоже хочу таким умным быть.
Аноним 09/07/18 Пнд 18:25:11  1225158
Girls.jpg (76Кб, 600x536)
>>1224859
>Карринг, хуярринг - какое это сюда имеет отношение вообще?
Аноним 09/07/18 Пнд 20:06:18  1225194
>>1180043 (OP)
А исходники ядра linux видели?

Там немало функций типа

void __wait_rcu_gp(bool checktiny, int n, call_rcu_func_t ⁕crcu_array, struct rcu_synchronize ⁕rs_array);
Аноним 09/07/18 Пнд 20:09:45  1225198
>>1180043 (OP)
>Положняк такой: функции с 3 или больше аргументами НЕНУЖНЫ.

Правильно ли я догадываюсь, что ты с таким убеждением так и не написал ни одной широко востребованной программы?
Аноним 09/07/18 Пнд 21:01:20  1225235
>>1225158
По делу есть что сказать?
Аноним 09/07/18 Пнд 22:07:18  1225281
>>1225194
Речь о высокоуровневых языках.
Аноним 09/07/18 Пнд 23:14:11  1225320
>>1180043 (OP)
Для графики - vector(x, y, z)
Для БД - add(id, name, desc)
Для расчет промежутка времени - period(time1, time2)
И много других подобных примеров.
Иди нахуй школьник.
Аноним 09/07/18 Пнд 23:57:52  1225349
>>1225320
Открой для себя алгебраические типы данных.
Аноним 10/07/18 Втр 00:44:36  1225369
>>1225281
Исходники redox kernel видели?

fn file_op(a: usize, fd: FileHandle, c: usize, d: usize) -> Result<usize>
Аноним 10/07/18 Втр 01:13:06  1225376
slozhit_chetire_chisla(a, b, c, d) { return a + b + c + d; }
Аноним 10/07/18 Втр 05:26:55  1225401
>>1225376
Хорош, ОП обоссан. Ждём оправданий.
Аноним 10/07/18 Втр 09:55:37  1225460
>>1225369

Зачем нужны эти параметры? Кто мешает все эти 4 параметра в один тип упаковать?
Аноним 10/07/18 Втр 10:12:22  1225464
>>1225349
И че?
Аноним 10/07/18 Втр 10:13:19  1225465
>>1225460
>Кто мешает все эти 4 параметра в один тип упаковать?
Нахуя?
Аноним 10/07/18 Втр 10:45:41  1225472
>>1225460
Это и есть один тип.
Круглые скобки по бокам видишь?
Ну и вот - это 4-tuple.
Аноним 10/07/18 Втр 16:05:04  1225587
Для меня до сих пор остается загадкой, почему именно этот тред привлекает такое огромное количество не очень умных людей. Причем они пишут раз за разом одно и то же, как под копирку. Мне бы даже хотелось верить, что это полтора семена тут создают видимость такого низкого интеллектуального уровня доски, но, увы, вероятность такого исхода ничтожно мала.
Аноним 10/07/18 Втр 16:11:08  1225591
>>1225472
Нет, анон. Раст не поддерживает именованные компоненты в таплах. Это не тапл, а синтаксис вызова функции. Чисто формально можно считать любую функцию принимающей тапл, так как в расте нет карри^W мойшинга, но в этом нет никакого смысла (и это уже осбуждалось в начале треда, почитай).

>>1225369
Кроме того, это очень плохой пример кода. Параметры с именами a,c,d типа usize - это просто квинтэссенция говнокодерства впрочем, я предполагаю, что это не реальная строка оттуда, а просто contrived пример. Случаи, в которых действительно необходимо использовать рекорды с несодержательными именами мемберов, уже подробно описали в начале треда (правда, почитай).
Аноним 10/07/18 Втр 16:20:10  1225596
>>1225369
>Исходники redox kernel видели?

Вот ещё оттуда

fn futex(addr: &mut i32, op: usize, val: i32, val2: usize, addr2: *mut i32) -> Result<usize>
Аноним 10/07/18 Втр 16:34:49  1225604
>>1180043 (OP)
> Назовите хоть один пример функции, которой нужно принимать >=3 аргументов
int sum(const double arr1, const double arr2, double result)
Аноним 10/07/18 Втр 17:09:43  1225634
>>1180043 (OP)

Смотрим исходники servo

fn create_cached_response(request: &Request, cached_resource: &CachedResource, cached_headers: &Headers, done_chan: &mut DoneChannel) -> CachedResponse

fn handle_range_request(request: &Request, candidates: Vec<&CachedResource>, range_spec: &[header::ByteRangeSpec], done_chan: &mut DoneChannel) -> Option<CachedResponse>
Аноним 10/07/18 Втр 18:15:57  1225653
ОПа закормили уже хуями, лол.
Он, наверное, так счастлив никогда раньше не был.
Аноним 10/07/18 Втр 19:11:32  1225696
>>1225596
>val
>val2
>addr
>addr2
Коуд квалити из аур хайест прайорити! Ты бы хоть доку или сурс скинул, телепаты в отпуске. Сама операция принимает addr и val, а что они в своей реализации наворотили яхз.

>>1225634
Отличный пример кода, в котором обязательно должны использоваться именованные параметры, спасибо.

>>1225653
Изливай свои проекции в /ga.
Аноним 10/07/18 Втр 21:29:38  1225804
>>1225634
>Смотрим исходники servo

Ещё

fn new_resource_threads(user_agent: Cow<'static, str>, devtools_chan: Option<Sender<DevtoolsControlMsg>>, time_profiler_chan: ProfilerChan, mem_profiler_chan: MemProfilerChan, embedder_proxy: EmbedderProxy, config_dir: Option<PathBuf>) -> (ResourceThreads, ResourceThreads)

fn classify(&self, context: LoadContext, no_sniff_flag: NoSniffFlag, apache_bug_flag: ApacheBugFlag, supplied_type: &Option<MimeType>,
data: &[u8]) -> MimeType
Аноним 10/07/18 Втр 22:56:30  1225862
autism.jpg (22Кб, 312x360)
>>1225804
Аноним 11/07/18 Срд 02:57:35  1225922
AAEAAQAAAAAAAAk[...].jpg (377Кб, 1280x624)
>>1180043 (OP)
Двачую.

ОП, я вот тоже стал загоняться над этим и пришлось перейти на ассемблер, там инструкции обычно по 1-2 операнда принимают.

Теперь вот работаю в НИИ, кайфую, пишу на x86 ассемблере в NASM.
Аноним 11/07/18 Срд 11:31:37  1226024
>>1180043 (OP)
Ну ты черт. Давай привнесем матбазы в твою воду и вспомним, что функция - частный случай оператора. А среди них бывают и тернарные.
Аноним 11/07/18 Срд 20:46:02  1226316
>>1225922
Лол. Не, серьезно?

>>1226024
>функция - частный случай оператора
У вас какая-то неправильная матбаза.
Аноним 08/08/18 Срд 00:18:55  1242765
string hui(int a, int b, int c){
...
return trun;
}
|
|
(стрелочка типо вниз ага)
struct spesialno_for_hui{
int a, b, c;
}
string hui(spesialno_for_hui ssssssssy_na_ebalo){
int a = ssssssssy_na_ebalo.a, b = ssssssssy_na_ebalo.b, c = ssssssssy_na_ebalo.c;
...
return trun;
}

Бинарные функции не нужны
Аноним 08/08/18 Срд 14:53:44  1243059
ФУНКЦИЯ выебать_мамку_опа(ХУЙ в_ротан, ХУЙ в_пиздень, ХУЙ в_анус);
Аноним 10/08/18 Птн 07:12:54  1243956
>>1180043 (OP)
Очевидная хуйня. Функции должны быть разделены по уровням абстракций и если на одном уровне необходимо выполнить что-то с количеством аргументов >2, то не нужно хуячить говно типа оберток для аргументов, оставь это для фанатиков уровня https://habr.com/company/piter/blog/418157/
Аноним 10/08/18 Птн 13:34:25  1244167
тест
Аноним 10/08/18 Птн 15:53:16  1244282
>>1243956
>https://habr.com/company/piter/blog/418157/
Ну он как бы все правильно говорит (и любому более-менее опытному/любознательному разработчику это все должно быть очевидно), разве что примеры не всегда самые удачные.
Аноним 13/08/18 Пнд 14:46:56  1246065
>>1180043 (OP)
Быдло не знает про каррирование.
Аноним 13/08/18 Пнд 15:19:22  1246085
>>1180043 (OP)
Ну собственно да.
Ибо есть инкапсуляция.
Аноним 13/08/18 Пнд 19:50:09  1246231
>>1246085
JavaDebilFuncitonBean javaDebilFuncitonBean = JavaDebilFuncitonBeanFactory.createJavaDebilFuncitonBean()
javaDebilFuncitonBean.setParameter0(..)
javaDebilFuncitonBean.setParameter1(..)
...
javaDebilFuncitonBean.run()
JavaDebilFuncitonBeanResult javaDebilFuncitonBeanResult = javaDebilFuncitonBean.getResult()
Аноним 20/09/18 Чтв 18:46:06  1267266
Кажется, мы стали забывать...
Аноним 21/09/18 Птн 09:55:33  1267540
>>1225235
Внатуре, он то нихуя дельного сказал, но ты то просто информационная бомба
> Если вы не поняли, о чём речь, попробуйте понять.
Аноним 21/09/18 Птн 18:04:23  1267853
>>1243059
Тут очевидный список же.
ФУНКЦИЯ выебать_мамку_опа(ХУЙ *в_место, int число_смычков);
Аноним 21/09/18 Птн 20:18:47  1267920
>>1180043 (OP)
Тред не читал, сразу отвечал.

Все функции должны принимать либо 0 аргументов, либо 1 аргумент (структура с описанием всех входных данных). Всё остальное нужно запретить. Пруф ми ронг.
Аноним 21/09/18 Птн 22:17:01  1267981
>>1267920
В динамическом языке это равносильно именованным аргументам, а в статическом заебешься структуры под каждую функцию делать.
Аноним 21/09/18 Птн 22:24:57  1267982
>>1180043 (OP)
>Все функции должны принимать либо 0 аргументов
Все функции принимают хотя бы 1 параметр на сам объект:
self, this итд

иди собирай портфель на понедельник
Аноним 21/09/18 Птн 22:44:01  1267996
>>1267920
>Пруф ми ронг.
Выше по треду подробно объяснялось - глянь ближе к началу, если интересно. Заодно поржешь с местного контингента.

Алсо,
>либо 0 аргументов
>тогда это и не функции вовсе

>>1267981
Не заебешься, тоже уже обсуждалось - гугли rows, labels, intersection/union types, смотри выше.
Аноним 15/10/18 Пнд 17:25:45  1279546
>>1180043 (OP)
https://github.com/MonoGame/MonoGame/blob/develop/MonoGame.Framework/Graphics/SpriteBatch.cs
253 строка
Аноним 15/10/18 Пнд 19:06:43  1279591
>>1279546
Ну и говнокод. Неудивительно, что эта параша не взлетела.

У функции draw тип такой: (DrawingContext ctx, Sprite s -> DrawingContext), обыкновенная бинарная функция. Тыщу раз уже этот пример приводили.
Аноним 15/10/18 Пнд 23:40:18  1279724
>>1180043 (OP)
Ты лох чмо твои доводы рушит любой конструктор с параметрами соси тварь привет здравствуйте
Аноним 16/10/18 Втр 04:01:42  1279805
>>1279546
>253 строка
А ссылки на строки ты давать не научился еще, даун?
Аноним 16/10/18 Втр 16:05:48  1279992
>>1279805
Не обижай местных ребятишек, у них еще все впереди.
Аноним 17/10/18 Срд 17:39:03  1280611
>>1180243
Предлагаешь на каждую из этих функций завести структуру с параметрами? И ничего, что проблема большого количества аргументов не решается, а просто переходит на новый уровень?
Аноним 20/10/18 Суб 03:03:28  1281660
>>1279591
Приведи пример кода для данного конкретного случая
Аноним 20/10/18 Суб 07:07:10  1281686
>>1280611
Нормальную структуру, а не какой-нибудь кей-валуе лист.
Аноним 20/10/18 Суб 09:06:00  1281706
>>1215106
Не атомарно же. А если твой волшебный читатель дед Пердед из соседнего отдела будет юзать?
Аноним 20/10/18 Суб 16:35:18  1281848
>>1281660
Какого кода? Я тебе сигнатуру функции привел, дальше думаю сам сможешь разобраться, если не дурак.
Аноним 20/10/18 Суб 17:08:53  1281858
>>1180045
Научи их Builder-паттерну, а не на двощах жалуйся.
Аноним 20/10/18 Суб 21:15:10  1281925
>>1281848
Что мне твоя сигнатура, ты мне реальный код покажи (c#). На словах я тоже могу много каких сигнатур привести.
Аноним 20/10/18 Суб 21:59:32  1281934
>>1279546
> 253 строка
На гитхабе можно делать ссылки на строку
https://github.com/MonoGame/MonoGame/blob/develop/MonoGame.Framework/Graphics/SpriteBatch.cs#L253
Или даже блок
https://github.com/MonoGame/MonoGame/blob/develop/MonoGame.Framework/Graphics/SpriteBatch.cs#L253-L262
Аноним 20/10/18 Суб 23:12:31  1281950
>>1281925
>дальше думаю сам сможешь разобраться, если не дурак.
Ну, вы поняли.
Аноним 23/10/18 Втр 13:45:55  1283310
>>1279591
>>1281848

>(DrawingContext ctx, Sprite s -> DrawingContext)
>Какого кода?
Сделал тебе тестовый "проект" за 5 минут. Покажи, что ты хотел сделать с этим.
https://pastebin.com/aAhxwr4G
Аноним 28/10/18 Вск 18:43:56  1286002
>>1180043 (OP)
>>1279591
Слив засчитан. Тред можно закрывать.
Аноним 28/10/18 Вск 19:54:00  1286050
>>1180043 (OP)
Некоторые функции требуют некоторое количество параметров, чтобы юзер смог влиять на работу функции.
Я что по-твоему должен в один параметр массив/объект ложить? Нахуй пройди.
Аноним 28/10/18 Вск 20:22:41  1286066
>>1286050
Лично ты ничего не должен, ведь ты не имеешь никакого отношения к разработке софта, малыш.
Аноним 28/10/18 Вск 20:42:13  1286090
>>1286066
> ведь ты не имеешь никакого отношения к разработке софта, малыш.
Давай ретурни свой брейнлог уже.
Аноним 28/10/18 Вск 21:21:31  1286114
>>1180043 (OP)
Два трехмерных вектора заданных параметрически. Решай это в двух аргументах, чмо мразь говно падла ну давай иди сюда я тебя сам трахну ублюдок мать твою говно собачье
Аноним 29/10/18 Пнд 19:18:41  1286546
>>1286114
>Два трехмерных вектора
>Два
Аноним 29/10/18 Пнд 21:53:19  1286636
>>1286114
Слышал про структуры?
Аноним 30/10/18 Втр 05:59:16  1286818
>>1180043 (OP)
ОП, отгадай загадку. Сколько параметров у функции f:A×B×C→D ?
Аноним 01/11/18 Чтв 00:39:19  1287895
>>1180043 (OP)
У меня от тебя КАРРИРОВАНИЕ
Аноним 01/11/18 Чтв 00:49:43  1287899
>>1286818
один?
Не оп.
Аноним 01/11/18 Чтв 02:12:40  1287917
работал с несолькими библиотеками на сях когда то
весь интерфейс библиотеки представлял собой три функции - инициализирующую, закрывающую и выполняющую основную работу
главная функция принимала в себя структуры определенного типа, тип которой определялся первым полем этой структуры, и вторым параметром выплевывала вторую структуру в которой значит первое поле был размер выплевываемого, а вторым полем значит месиво байтов в виде результа, все это вы дело приводили к соотв структуре у себя в коде
ах, да, еще было два варианта работы - либо библиотека вам изнутри себя память под результат выдавала, либо вы соотв вызовом все той же функции могли передать ей выделенную память и она уже туда помещала результат
и еще было версионирование библиотеки - все у той же функции тем же макаром вы запрашивали какой она версии, и потом могли соответственно работать
ну и еще с парочкой библиотек работал с похожими принципами
конечно, такой подход имеет место быть
но, бля, вершина библиотекостроения на сишке, импо, это все равно com-интерфейсы, больше всего нравились они
потому что с наколенными поделиями все равно больше проблем было
Аноним 01/11/18 Чтв 02:45:56  1287925
>>1180043 (OP)
И да и нет, с одной стороны конечно удобно, когда надо передать 1-2 аргумента, а не 4-5. С другой стороны, в развивающемся проекте код довольно динамичен и сегодня в функцию надо 3 аргумента, а завтра последний выкинуть и добавить 2 других, а после завтра выкинуть нахер эту функцию, а код ее раздербанить по другим методам.И не всегда, если агрегировать несколько аргементов один - будет реально нужная сущность, а не искуственно выдумая хрень для одного метода.
Аноним 01/11/18 Чтв 03:55:38  1287939
>>1287925
> И не всегда, если агрегировать несколько аргементов один - будет реально нужная сущность, а не искуственно выдумая хрень для одного метода.
Двачую этого.
Оп хуй
Аноним 01/11/18 Чтв 10:09:51  1288005
>>1180043 (OP)
>Все функции должны принимать либо 0 аргументов (тогда это и не функции вовсе)
Это простые метки для переходов (замечательный мир ассемблера).

>либо 1 аргумент (унарные функции), либо 2 аргумента (бинарные функции)
Функция всегда возвращает значение, а как же процедуры, которые не возвращают значений?

>Все остальное нужно запретить (code convention'ом или компилятором)
Запрещать ничего не нужно, но ты можешь всегда написать свой "code convention" и предоставить свои труды на всеобщее обозрение осуждение.

>Назовите хоть один пример функции, которой нужно принимать >=3 аргументов, и я поясню, почему вы неправы и пишете говнокод.
Для начала предоставь свой не "говнокод", иначе любой разработанный код можно подвести под рамки "говнокода" с любой точки зрения субъективного самомнения, без исключений.
Аноним 01/11/18 Чтв 10:56:20  1288023
>>1180043 (OP)
А какая вообще разница? Ну будет один аргумент, какой-нибудь тупль, и из него будем доставать все аргументы. Суть не меняется.
Аноним 01/11/18 Чтв 11:03:48  1288033
>>1180043 (OP)
>ПОЛОЖНЯК ТАКОЙ: функции с 3 или больше аргументами НЕНУЖНЫ.
На самом деле положняк такой, что Хаскель не нужен. Пруф ми ронг.
Аноним 01/11/18 Чтв 13:40:31  1288105
>>1288005
>Это простые метки для переходов (замечательный мир ассемблера).
facepalm.jpg

>Функция всегда возвращает значение, а как же процедуры, которые не возвращают значений?
Процедуры неявно возвращают успешность своего завершения%или не завершаются вовсе, или вызывают эксепшены%

>Запрещать ничего не нужно
Иногда нужно. Но тут, пожалуй, соглашусь - хотите плодить говнокод - плодите.
Аноним 01/11/18 Чтв 14:19:46  1288125
>>1180043 (OP)
Готов?
function Human(name,age,iq)
{
this.name=name;
this.age=age;
this.iq=iq;
}
op=new Human("OP",12,60);
Аноним 01/11/18 Чтв 14:41:04  1288132
>>1288125
Парируй!
[CODE]
function Identity(user)
{
this.name = user->name;
this.age = user->age;
this.iq = user->iq;
}
op = new Identity({"OP", 12, 60});
[/CODE]
Аноним 01/11/18 Чтв 15:08:40  1288141
>>1288105
>facepalm.jpg
holepalm.jpg

>Процедуры неявно возвращают успешность своего завершения%или не завершаются вовсе, или вызывают эксепшены%
Байтоёбы смотрять на тебя укоризненно, как на лиственную белоснежку в окружение 7 гномов.

>Иногда нужно. Но тут, пожалуй, соглашусь - хотите плодить говнокод - плодите.
Твой код также говнокод ханжа ты этакая.
Аноним 01/11/18 Чтв 15:35:19  1288154
>>1288125
ОП конструкторы не считает за функции. Такие дела.

>>1288141
>holepalm.jpg
Не отличаешь константную функцию от goto? У меня для тебя плохие новости.

>Байтоёбы
Байтоёбское мнение никто не спрашивал.
Аноним 01/11/18 Чтв 15:44:49  1288161
>>1288154
>Не отличаешь константную функцию от goto? У меня для тебя плохие новости.
Наоборот, это у меня плохие новости для анона, который не может в нисходящие абстракции вплоть до низкоуровнего представления инструкций машинного кода. Быстрее излечи свою высокоуровневость мозга.

>Байтоёбское мнение никто не спрашивал.
Ну тогда ты идёшь нахуй сладенький
Аноним 01/11/18 Чтв 15:51:28  1288165
>>1288161
>в нисходящие абстракции
Что же ты до ТТЛ-представления не добрался, а, байтоёб?
Аноним 01/11/18 Чтв 15:54:57  1288167
>>1288165
> ТТЛ-представления
Потому и байтоёб, а не элитный схемоёб.
Впрочем ты даже не можешь в байтоёбство.
Аноним 01/11/18 Чтв 15:59:08  1288170
>>1288167
>Потому и байтоёб, а не элитный схемоёб.
Мозгов не хватило?
Был бы байтоёбом, знал бы, что даже вызов функции с параметрами на уровне байтоёба - этот тот же сраный переход по метке.
Аноним 01/11/18 Чтв 16:06:08  1288180
>>1288170
>Мозгов не хватило?
Скорее интереса.
>что даже вызов функции с параметрами на уровне байтоёба - этот тот же сраный переход по метке.
Мне это и так известно, умник
Аноним 01/11/18 Чтв 16:21:20  1288193
>>1288180
А тебе известно, что абстракция под названием "функция" всегда обеспечивает возвращение в место вызоварасходимости не рассматриваем, а простой goto в метку о чем твое байтоебское низейшество и говорило нет?
Аноним 01/11/18 Чтв 16:43:25  1288207
>>1288193
Если говорить по факту функция может принимать аргументы и всегда предполагает возвращаемое значение.
Процедура может принимать аргументы и никогда сама не возвращает значения.
Переход не предполагает ни того ни другого.

>"функция" всегда обеспечивает возвращение в место вызова
Как и процедура, а вообще это обеспечивает инструкция call с ёблей через стэк, неуч.
Алсо по средством goto вполне организовывается тот же самый call, но более ёмко так как ебаться со стеком уже нужно самому.

>байтоебское низейшество
Как же сложно общаться с людьми без образования, которые обделены широтой мысли от природы.
Аноним 01/11/18 Чтв 17:16:05  1288217
>>1288207
При чем здесь процедура, call, стэк и прочая хуйня, относящаяся к конкретной архитектуре конкретного вычислителя? Твой изначальный тезис о нуль-арных функциях:
>Это простые метки для переходов (замечательный мир ассемблера).
И вот тут сильно обосрался, дебич, и начал уводить разговор в какую-то лютую хуйню. Это не простые метки для переходов, идиот, это функция (в высокоуровневом понимании), которая в зависимости от своего содержимого, компилятора и целевой архитектуры может быть скомпилирована в кусок машкода, или кусок данных, или в еще какую хуйню в лисп-машинах. Если ты этого не можешь понять, то какой ты нахуй байтоёб? Однобокий ты x86 байтоёб.
Аноним 01/11/18 Чтв 17:57:39  1288247
>>1288132
В чём разница?
> user->name;
Зачем когда можно
> user.name
?
>>1288154
> ОП конструкторы не считает за функции. Такие дела.
Может у него функции не объекты даже?
Аноним 01/11/18 Чтв 17:59:19  1288249
>>1180043 (OP)
ООП>Функциональные.
Докажи обратное.
Аноним 01/11/18 Чтв 18:21:02  1288257
>>1288217
Какой же ты дебил, когда же ты сдохнешь.

>Твой изначальный тезис о нуль-арных функциях
Мой тезис был о том, что на низкоуровневом представлении кода отсутствуют какие-либо функции и процедуры в привычном понимании.

>И вот тут сильно обосрался, дебич, и начал уводить разговор в какую-то лютую хуйню.
Ты вообще на протяжении всего нашего диалога несешь какую то хуйню, не можешь нормально сформировать и высрать свои ничтожные мысли по данному предмету обсуждения.

>При чем здесь процедура, call, стэк и прочая хуйня
При том, что ты нихуя не разбираешься, а лезишь! берегись - убьёшься нахуй

>Процедуры неявно возвращают успешность своего завершения%или не завершаются вовсе, или вызывают эксепшены%
Вот тут ты обосрался.

>"функция" всегда обеспечивает возвращение в место вызова
Вот тут ты обосрался.

> компилятора и целевой архитектуры может быть скомпилирована в кусок машкода
Про машкод и была речь с самого начала, нахуй ты в компиляторы залез мудак

>Если ты этого не можешь понять
Я уже понял, что ты нихуя не понимаешь
Аноним 01/11/18 Чтв 18:22:06  1288261
Самый простой пример -- это онструктор структуры с более, чем двумя полями в Си, потому что в неё обычно надо передавать void, перед которым следуют инициализирующие значения.
Напомню, что обычно в таких конструкторах проводится проверка полей на допустимые значения.
А код ошибки, в хорошем тоне программирования возвращают из функции как значение. Вот тебе пример...
if ( InitializeMyStruct( foo, bar, baz, pMystuct ) != E_SUCCESS )
{
ErrCodeToMessage( int errno );
return E_BAD_INITIALIZE_MY_STRUCT;
}

А ещё вспомни про семейства printf\scanf. Где va_args -- это вообще неоценимая плюшка.
Аноним 01/11/18 Чтв 18:26:13  1288265
>>1288261
int errno = InitializeMyStruct( foo, bar, baz, hui, pizda, dzhigurda, pMyStuct );
if ( errno != E_SUCCESS )
{
    ErrCodeToMessage( int errno );
    return E_BAD_INITIALIZE_MY_STRUCT;
}

фикс
Аноним 01/11/18 Чтв 18:55:15  1288292
>>1288257
>Мой тезис был о том, что на низкоуровневом представлении кода отсутствуют какие-либо функции и процедуры в привычном понимании.
Идиот, блядь, в конкретном вычислителе, скажем x86, так оно и есть. Но в каком-нибудь другом вычислителе может быть иначе, например, в машине, реализующей лямбда-исчисление.

>какие-либо функции и процедуры в привычном понимании.
Какое у тебя привычное понимание функции, байтоёб?

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

>Вот тут ты обосрался.
Вырвал из контекста, сучий выродок. Там еще в скобочках приписка была.

>Про машкод и была речь с самого начала, нахуй ты в компиляторы залез мудак
Потому что ты, сраный байтоёб, высокуровневую абстракцию своим маленьким мозгом откомпилил в низкоуровневую конструкцию, откуда и взялся твой даунский тезис. Для тебя это произошло неявно, и так как ты глуп как валенок, ты этого не осознаешь.
Аноним 01/11/18 Чтв 18:58:45  1288294
>>1288247
>Может у него функции не объекты даже?
Конечно! Функции это не объекты, а стрелки между объектами.
Аноним 01/11/18 Чтв 19:05:43  1288307
>>1288292
Проиграно и мы оба идём нахуй, спасибо за неконструктивный диалог.
Аноним 01/11/18 Чтв 20:12:16  1288372
>>1288132
Дебич, пиздец.
Нахуя 2 одинаковых класса. Это называется констркутор
Аноним 01/11/18 Чтв 21:02:04  1288401
>>1288294
Он дурак просто. Всё объекты, а объекты это ВСЁ. И функция объект, и число объект, и объект объект, и небо объект, и Аллах объект.
Аноним 02/11/18 Птн 10:43:11  1288662
>>1288247
>Может у него функции не объекты даже?
Ну тезис у него такой ебанутый, интересно как он каррировать конструкторы будет, если это не функции.
Аноним 02/11/18 Птн 11:22:13  1288684
>>1288125
function Human({name,age,iq})
{
this.name=name;
this.age=age;
this.iq=iq;
}
op=new Human({name:"OP",age:12,ig:60});
Аноним 02/11/18 Птн 16:54:02  1288833
>>1288684
> {name,age,iq}
Такое вообще законно?
Аноним 02/11/18 Птн 17:06:03  1288837
>>1288833
С разморозкой.
Аноним 02/11/18 Птн 17:07:26  1288838
>>1288833
Такое тоже.

function Human({name,age,iq})
{
Object.assign(this, {name,age,iq})
}
op=new Human({name:"OP",age:12,ig:60});
Аноним 11/11/18 Вск 02:55:11  1293348
>>1180043 (OP)
я короче любитель, сильно не пинайте, но смотри, почему если аргументов 0 то это не функция? вот объявил я функцию по синтаксису языка, везде ее прописал, там где я ее использую где должна выполняться сама функция каждый раз мне не нужно, и все нужные данные для функции я подгружаю при старте нужного потока, т.е. запускаю поток, подгружаю все нужные данные для работы, и кое какие подгруженные данные и будут аргументами для функции, их много и при каждом вызове функции данные всегда меняются. То есть в данном случае в моем софте было бы супербредом сначала получить данные для того что бы передать их в функцию и намного логичнее в моем случае что бы нужные данные функция сама выбирала когда я ее вызову.
Аноним 12/11/18 Пнд 02:24:25  1293948
Опять реанимирую этот кусок дерьма, но подумайте, очевидно что ОП троляка. Все базируется на том, что любая функция это попытка изменить состояние (не то состояние от которого пытаются избавиться хаскелеёбы), она принимает одно состояние и возвращает другое, так что нам даже два аргумента будет лишним, просто писать всё на унарных операторах было бы слишком толсто. В итоге оп говорит, что есть два состояния из которых мы получаем третий. Вся математика построена на бинарных операциях под собой, в конце концов процессоры построены на бинарной логике.
Можно ли преобразовать любую программу в такую бинарную программу на высокоуровневых языках, как завещал оп? Конечно можно.
Будет ли человек в здравом уме придерживаться такого ограничения и создавать из двух точек линию, а из точки и линии плоскость? Нет, так как если мы откуда-то получаем три точки, то каждый раз надо будет руками вызывать эту функцию линии, что приведет к копипасте ( в любом случае я не хочу об этом спорить в силу существования возможности разделить это на бинарные функции)
В любом случае это уже дело стиля, ничего доказать ОПу вы по определению не можете, мнение опа технически может существовать.
Спорить об этом бессмысленно.
Аноним 21/11/18 Срд 13:56:30  1298891
>>1293348
>почему если аргументов 0 то это не функция?
Если при этом функция ничего не возвращает то это метка.
Если функция ничего не возвращает, но принимает аргументы то это уже процедура.
Если функция не принимает аргументов, но что-то возвращает - это функция.

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

Глобальные переменные не нужны, но функции являются глобальными указателями и только они и должны быть.
Аноним 21/11/18 Срд 14:01:03  1298898
>>1293948
>Можно ли преобразовать любую программу в такую бинарную программу на высокоуровневых языках, как завещал оп? Конечно можно.
Можно всё, острый вопрос: а нужно ли? Программный код это лишь площадка для стиля и фундамент для структур, вопрос лишь в удобстве тех или иных решений (а также вкуса, однако он на последнем месте).

>Спорить об этом бессмысленно.
Тут никто не спорит, но ты прав.
Аноним 21/11/18 Срд 14:28:55  1298931
>>1298891
>Если при этом функция ничего не возвращает то это метка.
А если функция имеет побочные эффекты?
Аноним 23/11/18 Птн 10:21:52  1300029
>>1298931
>побочные эффекты
Перечень побочных эффектов, будьте добры, предоставте!
Аноним 23/11/18 Птн 11:16:36  1300049
>>1300029
Системное время. Значения из контроллеров измерительных устройств. Файловый ввод-вывод. Сетевой ввод-вывод. Межпроцессный обмен.
Всё, что нарушает referential transparency.
Аноним 23/11/18 Птн 11:32:30  1300057
>>1298931
>Если функция ничего не возвращает
То это не называется функцией.
Аноним 23/11/18 Птн 15:53:44  1300146
>>1300057
Так это относительно понятия "функция", или ты не умеешь в относительность контекста?
Аноним 23/11/18 Птн 16:02:45  1300151
>>1298891
>являются глобальными указателями
Быдлo, сэр.
Аноним 23/11/18 Птн 16:04:49  1300153
>>1288261
>А ещё вспомни про семейства printf\scanf. Где va_args -- это вообще неоценимая плюшка.
Что ты с ним споришь? Это же смузихлеб дранный.
Аноним 23/11/18 Птн 16:07:56  1300156
>>1300049
>Всё, что нарушает referential transparency.
Мы живём в мире погрешностей (иррациональных чисел), даже если высокоточно измерить какую-либо поверхность и заглянуть чуть глубже, то обнаружится, что на N * 10-100 метров на самом деле будет (N + С), где С это бесконечно малая.
Поэтому хватит строить иллюзии о незыбленном, вокруг одна сплошная конечная-бесконечность.
Аноним 23/11/18 Птн 16:14:44  1300163
>>1300151
Это очень грубо говоря так.

>Быдло, сэр.
Как и вы, сэр.
Аноним 23/11/18 Птн 16:23:07  1300167
Любое подобное суждение по дефолту ложное, это попытка зашаблонить нешаблонизируемое.
Аноним 23/11/18 Птн 16:26:14  1300169
>>1300167
>это попытка зашаблонить нешаблонизируемое
Как будто что-то плохое... И да зашаблонить можно всё и без исключения, вопрос только в том, что стоит ли это того.
Аноним 23/11/18 Птн 16:39:37  1300180
>>1300163
>Как и вы, сэр.
Я не отрицаю, сэр.
>>1300169
>И да зашаблонить можно всё и без исключения
Здесь шаблонизировать, сэр, нет надобности. Это лишь погоня за своим внутренним желанием анонизировать на искуственные правила.
Аноним 23/11/18 Птн 16:43:39  1300184
>>1300180
>анонизировать
Онанировать, сэр, этот Т9 опять меня подвел.
Аноним 23/11/18 Птн 16:48:08  1300188
>>1300180
>Здесь шаблонизировать, сэр, нет надобности. Это лишь погоня за своим внутренним желанием анонизировать на искуственные правила.
Все мы где-то в чём-то над чем-то, а порой в кого-то - онанируем, сэр.
Аноним 23/11/18 Птн 17:32:11  1300207
>>1300029
>>1300156
Обезьянка не знакома с побочными эффектами, но смеет кукарекать про классификацию функций. Найс.
Аноним 23/11/18 Птн 18:01:34  1300227
>>1300188
Но, cэр, если мы будем все дальше уходить в пучины онанизм, то от этого не стоит ожидать ничего хорошего.
Аноним 26/11/18 Пнд 09:17:49  1301279
>>1300227
Совершенно верно, сэр. Поэтому если вам данный онанизм не доставляет никакого удовольствия, то вам следует прекратить, сэр.
Аноним 26/11/18 Пнд 09:24:36  1301281
>>1300207
>Обезьянка не знакома с побочными эффектами, но смеет кукарекать про классификацию функций. Найс.
Обезьянок тут давно уже нету, только конверты. Насчёт побочных эффектов то это класс не решаемых задач, так как причина этих явлений находится в фундаменте человеческого восприятия и поэтому, чтобы от этого избавится придётся полностью менять всё людское познание вплоть до единиц измерения (например атомные линейки, которые будут мерить не какую-то абстрактную величину выражающиюся в мм, см, метрах и т.д., а вполне конкретную количественную), а на данный момент всё что мы можем делать, так это уменьшать побочные эффекты через усложнения и нагромождения ранее созданной системы восприятия.
Аноним 26/11/18 Пнд 10:01:05  1301291
>>1301281
Что несёт этот поехавший
Аноним 26/11/18 Пнд 10:03:38  1301292
>>1180043 (OP)
Эй, мудила, объясни почему в javasripte не нужен array.map
Аноним 26/11/18 Пнд 10:21:18  1301294
>>1301291
А что тебе не нравится юный воскрицатель риторических вопросов?
Аноним 26/11/18 Пнд 13:20:24  1301342
>>1301281
Твои слова являются подтверждением твоего незнания о побочных эффектах функций.
Аноним 26/11/18 Пнд 13:43:14  1301349
>>1301281
Ты реально не понимаешь, что означают термины "функция" и "побочный эффект".
И втираешь нам какую-то дичь.
Аноним 26/11/18 Пнд 14:49:25  1301376
>>1301342
>>1301349
>Твои слова являются подтверждением твоего незнания о побочных эффектах функций.
>Ты реально не понимаешь, что означают термины "функция" и "побочный эффект".
У меня обратное мнение.
И заебали со своими "ты не знаешь", " ты не понимаешь"
Очень ёмко с вашей стороны пидоры, желаю вам мучительной смерти от хуёв методом пенетрации ваших пластиковых анальных отверстий!

>И втираешь нам какую-то дичь.
С твоей стороны так много аргументов моего не знания, наверное по двум причинам: ты сам не понимаешь в чём заключается сабж или боишься показаться глупым, если предоставишь аргументы, и сам же останешься в дураках.
Аноним 26/11/18 Пнд 14:53:28  1301378
>>1301376
Смотрите, траль обиделся.
Аноним 26/11/18 Пнд 14:56:27  1301381
>>1301378
Очень смищно затраллили этого уебана


Топ тредов
Избранное