Сохранен 230
https://2ch.hk/pr/res/1083857.html
Прошлые домены не функционирует! Используйте адрес ARHIVACH.VC.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

PLT-тред

 Аноним 29/10/17 Вск 18:50:26 #1 №1083857 
typing.png
Читаем http://lambda-the-ultimate.org/, третий год пилим спецификацию своего ИДЕАЛЬНОГО ЯЗЫКА, меряемся системами типов, обоссываем индустриальных петушков. Для затравки:

--------------------------------------------------------------------------------------------------------------------------

положняк такой

- boolean - говно уровня goto
- весь код должен исполняться в maybe-монаде
- ЗА ИСКЛЮЧЕНИЕМ явно указанных мест
ну то есть не мейби надо указывать, а его отсутствие, нутыпонел
- эксепшены только в виде паники
- паттерн матчинг - говно и опционален
- если тебе нужно передавать информацию об ошибке caller'у, значит это не ошибка

поясняй

Аноним 29/10/17 Вск 18:58:49 #2 №1083866 
>>1083857 (OP)
Похоже на бред сумасшедшего.
Аноним 29/10/17 Вск 19:01:32 #3 №1083869 
>>1083857 (OP)
>говно уровня goto
обоснуй
Аноним 29/10/17 Вск 19:58:56 #4 №1083911 
>>1083857 (OP)
>весь код должен исполняться в maybe
ну вот уже и до квантового программирования добрались
sageАноним 29/10/17 Вск 20:03:33 #5 №1083912 
>>1083857 (OP)
>boolean - говно уровня goto
Явно понятие не имеет о булевой алгебре и логики вообще.
Алсо, поясни за goto, петушок?
Аноним 29/10/17 Вск 20:07:22 #6 №1083916 
>>1083857 (OP)
Это еще один маня-язык, который все будут восхвалять, но никто не будет пользоваться?
Аноним 29/10/17 Вск 20:13:30 #7 №1083918 
jmp.png
>>1083869
ну зачем ты так с ним? он просто не подумал
Аноним 29/10/17 Вск 20:26:28 #8 №1083923 
>>1083916
> Это еще один маня-язык, который все будут восхвалять, но никто не будет пользоваться?
Попахивает выдрисом.
Аноним 29/10/17 Вск 20:32:00 #9 №1083925 
>>1083866
Пхп-макака, срочно скрой тред.

>>1083869
>>1083912
true\false - артефакт низкоуровнего программирования. Если ты пишешь на си\асм - booleans are ok. Если ты пишешь на высокоуровневом языке - используй сумтайпы\мейби\любую другую подходящую абстракцию.

Можете попробовать придумать хоть один пример, где якобы нельзя обойтись без буленов - поясню, почему это хуевый пример.
Аноним 29/10/17 Вск 20:32:50 #10 №1083927 
>>1083916
Где ты язык увидел? Ты lambda ultimate за язык принял, лол? В коррекционном классе учишься?
Аноним 29/10/17 Вск 20:36:14 #11 №1083930 
>>1083925
> Можете попробовать придумать хоть один пример, где якобы нельзя обойтись без буленов - поясню, почему это хуевый пример.
Например, работа с промпротоколами, где булевы сплошь и рядом. Ты лучше сразу ответь, ты из жопы вылез?
Аноним 29/10/17 Вск 20:39:46 #12 №1083932 
q.png
>>1083930
го лучше в кванты. я создал
Аноним 29/10/17 Вск 20:40:59 #13 №1083933 
>>1083930
Приводи конкретный пример конкретного кода - поясню, где ты неправ.
Аноним 29/10/17 Вск 20:41:20 #14 №1083934 
>>1083932
мне кажется, или этот анон начал что-то подозревать?
Аноним 29/10/17 Вск 20:54:31 #15 №1083944 
>>1083933
Конкретно - реализация протокола Modbus. Этот протокол оперирует понятиями, в т.ч., такими, как "coil" и "discrete input", олицетворяющие собой бинарное состояние некоего электротехнического оборудования.
Совершенно очевидно, что программно состояние этих сущностей, с позволения сказать, выражается в виде единиц и нулей. Однако, следуя спецификации, состояние этих сущностей легче всего переложить на булевы типы.
Пример так себе, конечно, но таких случаев до фига и больше.
Аноним 29/10/17 Вск 20:57:37 #16 №1083947 
>>1083944
Ну так если у тебя в предметной области, натурально, вылазят булены, то ты берешь и хуяришь себе соответствующий тип из предметной области. Это совсем не то, о чем я говорю. Далеко не каждая программа оперирует понятиями, связанными с электротехническим оборудованием, - а булены почему-то пихают именно что в каждую программу.
Аноним 29/10/17 Вск 21:21:11 #17 №1083953 
>>1083947
Дело говоришь, все типы должны быть связаны с конкретным доменом, а не существовать просто так непойми зачем. Нужны кому-то булены — надо делать свой тип. Нужны кому-то числа — надо делать свой тип. Нужны строки — и снова лучше сделать свой тип.
Аноним 29/10/17 Вск 21:29:36 #18 №1083955 
>>1083953
На самом деле твой сарказм тут мимо кассы. Те же строки постоянно используют неправильно - берут строку вместо даты, вместо урла, вместо константы\кейворда за неимением альтернативы в языке, пихают в строки логи (ну, с этим уже слава б-гу как-то справились, теперь текстовые логи - это скорее мемчик) - ну и так далее.

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

Все-таки индустрия уже давным давно поняли, что подход "все есть байты" не работает. Просто из-за инертности мышления не все видят, что до сих пор используют этот самый подход. Ну как без буленов, традиция же, везде есть. К тому же это так просто реализовать. Короче, та же история, что с null, один в один.
Аноним 29/10/17 Вск 21:59:31 #19 №1083965 
>>1083925
>поясню, почему это хуевый пример
if-ы то на что заменям, наркоман?
Аноним 29/10/17 Вск 22:04:58 #20 №1083967 
>>1083925
>Можете попробовать придумать хоть один пример, где якобы нельзя обойтись без буленов - поясню, почему это хуевый пример.

ленивой инициализация
Аноним 29/10/17 Вск 22:05:15 #21 №1083968 
>>1083967
ая*
Аноним 29/10/17 Вск 22:21:43 #22 №1083975 
>>1083925
Где ты всё это вычитал? Что мне нужно прочитать, чтобы тоже знать эту хуйню?
Аноним 29/10/17 Вск 22:48:23 #23 №1083983 
>>1083965
> if-ы
Как там в 80-ых? Во всех современных языках ифы давно реализуются через паттерн-матчинг.

>>1083967
Код напиши, инфузория.
Аноним 29/10/17 Вск 22:50:41 #24 №1083985 
>>1083975
Ну конкретно про булены можешь причаститься батей: https://existentialtype.wordpress.com/2011/03/15/boolean-blindness/

А так ссылка для начала в оп-посте есть.
Аноним 29/10/17 Вск 22:58:00 #25 №1083990 
>>1083983
>ифы давно реализуются через паттерн-матчинг
>- паттерн матчинг - говно и опционален
Запизделся ты, малыш.
Аноним 29/10/17 Вск 23:02:16 #26 №1083993 
>>1083985
Какой-то бред поехавшего по сслыке. Хотя ничего удивительного для такого треда.

Аноним 29/10/17 Вск 23:05:22 #27 №1083995 
>>1083990
Ты в логику не можешь? Ифы везде реализуются через паттерн-матчинг. Я считаю, что паттерн-матчинг - говно и должен быть опционален. Найди противоречие, прокариот.
Аноним 29/10/17 Вск 23:07:31 #28 №1083997 
>>1083993
Профессор Карнеги-Мелона, один из известнейших комплюктер сцайентистов, пишет какой-то бред поехавшего. Хотя ничего удивительного для такой борды.
Аноним 29/10/17 Вск 23:30:48 #29 №1084009 
>>1083983
>Код напиши, инфузория.

Не можешь пояснить концептуально - ссори, ты не интересен.
Аноним 29/10/17 Вск 23:38:59 #30 №1084012 
>>1084009
Концептуально я пояснил еще в оп-посте, а что ты имел в виду под "ленивой инициализация" (sic) мне угадывать неинтересно. Ленивая инициализация делается фьючерсами, будены тут вообще никакой жопой.
Аноним 29/10/17 Вск 23:46:39 #31 №1084016 
>>1083985
А попроще нет ничо? Хотя бы как это всё называется? Теория языков? Про опасность нулей только в каком-то треде на реддите про C# видел, и всё. А тут какие-то МОНАДЫ, прочая хуйня, куда я попал.

https://mikhail.io/2016/01/monads-explained-in-csharp/

Почему там про функциональщину пишут, если это куда угодно можно впихнуть? В том же C# есть Nullable, чистый монад по смыслу.
Аноним 29/10/17 Вск 23:46:47 #32 №1084017 
> There is no information carried by a Boolean beyond its value, and that’s the rub.

Твой профессор не знает что в cs булева переменная бывает не только истинной или ложной?

>>1084012
> Концептуально

Вскукарек о ненужости не концептуален по определению. Отвергаешь - предлагай.
Аноним 29/10/17 Вск 23:58:07 #33 №1084023 
>>1084016
Так, ты о чем именно спрашиваешь? Вообще, все это в целом называется Computer Science. Конкретно этот тред - про PLT, Programming Language Theory. Монады - это из Type Theory, ну и там категориями заодно можно упороться (за этим ---> /math). Если хочешь просто врубиться, что вообще к чему, какие в языках есть фичи и как надо писать программы - ну классика, htdp\sicp. Плюс познакомься с си, хотя бы одним лиспом, хотя бы одним ML-ем, хотя бы одним фортом. Кругозора от этого за глаза хватит.

Про функциональщину пишут, потому что все эти фишки (от Nullable или LINQ и до дженериков и сборщиков мусора) придумываются в функциональном комьюнити дядечками типа того, на блог которого я ссылку дал, и постепенно мигрируют в мейнстримовые языки с задержкой в пару (десятков) лет. Взять те же лямбды - еще лет десять назад они были только в хаскелях и лиспах, а теперь уже даже в джаву их запихнули. И т.д.
Аноним 30/10/17 Пнд 00:00:33 #34 №1084024 
>>1084017
>булева переменная бывает не только истинной или ложной
https://en.wikipedia.org/wiki/Boolean_data_type
> In computer science, the Boolean data type is a data type, having two values (usually denoted true and false)

> Отвергаешь - предлагай.
Предложил в оп-посте и в постах выше, блядь, какой же тупой, скрой этот тред, а лучше вообще никогда не подходи к клавиатуре.
Аноним 30/10/17 Пнд 00:07:43 #35 №1084028 
>>1084024

Ладно, как скажешь, закрою тред. Спорить с человеком который не видит разницы между булевом типом данных и переменной - трата времени. Булева переменная бывает не инициализированной, это третье состояние control-flow.

> Про функциональщину пишут, потому что все эти фишки (от Nullable или LINQ и до дженериков и сборщиков мусора) придумываются в функциональном комьюнити

Дженерики появились в джаве.

Все ушел из треда.
Аноним 30/10/17 Пнд 00:10:24 #36 №1084029 
>>1083925
> Можете попробовать придумать хоть один пример, где якобы нельзя обойтись без буленов - поясню, почему это хуевый пример.
def userExists(email: String): Future[Boolean]
Аноним 30/10/17 Пнд 00:27:15 #37 №1084039 
>>1083925
>Можете попробовать придумать хоть один пример, где якобы нельзя обойтись без буленов - поясню, почему это хуевый пример.
Ну например в моей числодробилке есть громоздкое логическое выражение, в которое некоторые подвыражения повторяются. Я хочу взять такие выражения, вычислить их, и присвоить булевым переменным, заодно дав им осмысленные имена, а потом использовать булевы переменные в выражении. Как это делается без булеанов?
Аноним 30/10/17 Пнд 00:45:57 #38 №1084046 
>>1083995
Уёбище, пиши нам пример control flow без единого if-а или pattern matching, а не языком чеши. Хотим посмотреть с посонами на достижения науки.
Аноним 30/10/17 Пнд 00:50:08 #39 №1084047 
>>1084028
Слава богу дебил съебался, уф.

>>1084029
Сука, или не съебался?! Нахуя ты сюда фьючер влепил, если оно на суть в контексте этого разговора никак не влияет? Ну да ладно.

Смотри. Есть несколько вариантов исправления:
- Возвращать явный флаг, типа User.EXISTS | User.DOES_NOT_EXIST. Так мы сохраняем контекст и явно в типах кодируем информацию о бизнес-логике.
- Возвращать Maybe User = Some User | Nothing. Это стандартный и очевидный вариант. Сейчас ты начнешь кукарекать, что ой-ой, зачем грузить юзера, нам же только проверить - ну так если у тебя в языке нормальная, то ничего и не будет грузиться, пока ты явно не залезешь внутрь Юзера и не вытащишь оттуда что-нибудь. Так что это полностью аналогичный код.

Есть еще один вариант, о котором я говорил в оп-посте, сейчас и его опишу.
Аноним 30/10/17 Пнд 00:51:40 #40 №1084048 
>>1084039
>дав им осмысленные имена
Так какое именно у тебя логическое выражение? Ты сравниваешь что-то, или что? Или у тебя там именно нулики с единичками числодробятся? Опиши конкретнее.
Аноним 30/10/17 Пнд 01:00:27 #41 №1084051 
>>1084046
>control flow
Вообще, явный контрол флоу - для байтослесарей. Но это так, food for thought.

На твой вопрос есть ответ в оп-посте, но так уж и быть, поясню еще раз. Все вычисления у тебя в мейби. Вычисление может быть либо успешным, либо нет. Предикаты либо возвращают свой аргумент (быть может, с суженным типом), либо фейлятся. Вот тебе и контрол флоу.

Ну а вообще, если тебе еще примеров именно контрол флоу без ифов надо, то погугли про nand gates на досуге.
Аноним 30/10/17 Пнд 01:01:38 #42 №1084052 
А, кстати, еще в смоллтоке нет ни ифов, ни паттерн матчинга.
Аноним 30/10/17 Пнд 01:09:26 #43 №1084054 
>>1084051
Глатко стелишь фраерок, но мы люди простые - хотим на код посмотреть. Ты нам fizz-buzz изобрази для наглядности.
Аноним 30/10/17 Пнд 01:41:41 #44 №1084063 
>>1084054
Ну, мапим по списку чисел вот такого вида функцию (пробелы наверное проебутся):

  div-by-3? => (_ -> "fizz")
| div-by-5? => (_ -> "buzz")
| any? => str

div-by-3? имеет тип вида ( Num -> (Num + 'div-by-3)? ). То есть оно возвращает свой аргумент со статическим тегом либо фейлится. a | b полиморфна по правому аргументу: если он может зафейлить, то вся конструкция либо возвращает первое незафейленное значение, либо фейлит; если нет - то конструкция возвращает левое значение, если оно не зафейлило, и правое в противном случае. => - это не кондишнл, а обычная аппликация: берем левый аргумент и применяем к нему правый аргумент, ну либо фейлим, если левый аргумент может зафейлить. str : Num -> Str, any? всегда возвращает свой аргумент без дополнительных тегов и никогда не фейлит.

На самом деле там все немного сложнее, конечно, но основную идею можно уловить и из такого объяснения на пальцах.

кококо, чем это отличается от буленов
Тем, что предикаты вида is-foo? возвращают значение типа Foo (либо фейлят и уходят на другой экзекьюшн патх).
Аноним 30/10/17 Пнд 01:42:55 #45 №1084064 
Смотрите-ка, не проебался пробел. Наебал систему.

тест
    тест

двач, я научился трифорсить
sageАноним 30/10/17 Пнд 01:56:36 #46 №1084070 
Мама, мама! Смотри, я придумал safe navigation operator!
Аноним 30/10/17 Пнд 02:01:05 #47 №1084073 
>>1084070
Вообще мимо, макака необучаемая. ООП разжижает мозги, вот уж точно.
sageАноним 30/10/17 Пнд 02:13:58 #48 №1084078 
>>1084073

> Тем, что предикаты вида is-foo? возвращают значение типа Foo (либо фейлят и уходят на другой экзекьюшн патх).

Грубо говоря, именно это и делают. Бтв, идея не оригинальная, вот сахарок для руби

https://github.com/apneadiving/waterfall
Аноним 30/10/17 Пнд 02:20:25 #49 №1084082 
>>1084047
Дебил. Булева алгебра. /thread
Аноним 30/10/17 Пнд 02:28:34 #50 №1084085 
>>1084082
Еще один школьник. Скрой, уходи.

>>1084078
> типы
> Ruby
Поделил на ноль. Сама идея ("хорошие данные пускаем по этому пути, плохие - по тому") так же стара, как программирование вообще. Этот конкретный руби-сахарок вдохновлялся манатками, которые в программирование везде - это один из базовых паттернов, блеать.

Но это абсолютно не то, о чем я говорю. У меня - вариация на тему Occurence Typing (https://docs.racket-lang.org/ts-guide/). Ну хуй знает, я так понимаю, человеку, который не знаком с тем, как все это работает, разница не особо видна - тут уж хз что поделать.
Аноним 30/10/17 Пнд 02:32:20 #51 №1084086 
>>1084085
Клоун, целочисленные типы тоже не нужы, берешь сумтайпы и хуячишь по индукции.
Аноним 30/10/17 Пнд 02:47:12 #52 №1084089 
>>1084086
С зависимостями оно так и работает как бы. Что сказать-то хотел?
Аноним 30/10/17 Пнд 03:15:27 #53 №1084095 
>>1084089
Что хотел сказать, то и сказал. А то что не догоняешь, это уже твои проблемы.
Аноним 30/10/17 Пнд 07:18:06 #54 №1084129 
>>1084063
харош уже абстрагироваться
>предикаты вида is-foo?
все верно, если это привести к конструкция if(foo) никто не возражает? то foo все равно занимает 1 байт(1 или 0), как и bool(true или false)
Аноним 30/10/17 Пнд 09:40:22 #55 №1084147 
>>1084063
Понопридумовоют своих умностей и ябут друг друга в жопы, а задачу решить не могут. Для 15 fizzbuzz должно быть.
Аноним 30/10/17 Пнд 15:48:39 #56 №1084294 
>>1083857 (OP)
>- весь код должен исполняться в maybe-монаде
>поясняй
Поясняю: виабушный PLT-щик сломался перед фактом, что тьюринг-полный язык не может быть тотальным и решил выразить частичные функции через мейби-манду, да еще сделать это умолчанием, сделав тем самым серьёзный шаг от кодов возврата в сторону переизобретения непроверяемых исключений.
Аноним 30/10/17 Пнд 15:53:20 #57 №1084297 
haskell.jpg
>>1084294
Аноним 30/10/17 Пнд 16:36:04 #58 №1084333 
>>1084047
>Возвращать явный флаг
Который изоморфен Boolean. А потом что - пилить для него инстанс HeytingAlgebra, да? Короче, ты предлагаешь бессмысленно поебаться на ровном месте, хотя можно например сделать newtype обертку. И получить одни инстансы бесплатно, а другие заменить на свои. Паттерн-матчинг правда страдает, но ты ж говоришь он не нужен.
>>1084294
>сделав тем самым серьёзный шаг от кодов возврата
В богом данном х-ле и так везде боттом воткнут, какие коды возврата.
Аноним 30/10/17 Пнд 16:37:49 #59 №1084334 
>>1083857 (OP)
>- boolean - говно уровня goto
Ну тоесть 2 > 3 это тип Maybe[BOLSHE], значение None?
yoba.jpg
Аноним 30/10/17 Пнд 17:05:54 #60 №1084355 
>>1084095
Ок, думай дальше, что это я чего-то не догоняю, лол.

>>1084129
Ты не врубился.

>>1084147
Мне показалось очевидным и излишним добавлять div-by-3-and-5? кейс, тебе так не кажется?
Аноним 30/10/17 Пнд 17:08:41 #61 №1084356 
>>1084294
Еще один, блядь. Ну ПРО ДРУГОЕ ЭТО СОВСЕМ, хули вы со своими тотальными функциями пристали. >>1084063 оккюренс тайпинг алё не читай @ отвечай.

По поводу кодов возврата
> - если тебе нужно передавать информацию об ошибке caller'у, значит это не ошибка
и непроверяемых исключений
> - ЗА ИСКЛЮЧЕНИЕМ явно указанных мест
> - эксепшены только в виде паники

написал в оп-посте.
Аноним 30/10/17 Пнд 17:10:19 #62 №1084357 
>>1084333
>Который изоморфен Boolean.
Аргумент уровня "все равно ж все в байтики компилируется))". Алсо, я же привел 3 (три) разных способа решения этой проблемы, как бы намекая, что в одних случаях лучше подходит один, в других - другой.
Аноним 30/10/17 Пнд 17:13:41 #63 №1084360 
14479491222910.gif
>>1084334
2 > 3 ето в идеальном случае `(Number, specifically: 2 | (> 3))?`, где намба - генерализованный тип, 2 - конкретный, (> 3) - параметризованный тайптег, x? - значение типа икс, которое может зафейлиться
Аноним 30/10/17 Пнд 17:26:04 #64 №1084364 
>>1084360
>2 > 3 ето в идеальном случае `(Number, specifically: 2 | (> 3))?`, где намба - генерализованный тип, 2 - конкретный, (> 3) - параметризованный тайптег, x? - значение типа икс, которое может зафейлиться
За такое нужно сжигать живьем.
Аноним 30/10/17 Пнд 17:30:43 #65 №1084366 
>>1084355
>Ты не врубился.
да я прост упорот был. впрочем похуй
https://ideone.com/0EkEIV
Аноним 30/10/17 Пнд 17:33:58 #66 №1084371 
>>1083953
>все типы должны быть связаны с конкретным доменом
Именно так. Для каждой единицы размерности должен быть свой тип, чтобы не складывать метры и килограммами. То есть у тебя CoilState должено быть задано отдельным типом-перечислением, а не булевой переменной.
Аноним 30/10/17 Пнд 18:10:13 #67 №1084394 
>>1084371
Ещё немного и изобретешь фиксед поинт.
Аноним 30/10/17 Пнд 18:30:15 #68 №1084408 
>>1084394
При чем тут фиксд пойнт? Это особенности реализации, сложить неправильные значения она тебе не помешает.
Аноним 30/10/17 Пнд 18:55:51 #69 №1084422 
>>1084355
>Мне показалось очевидным и излишним добавлять div-by-3-and-5? кейс, тебе так не кажется?
Так в этом всё фишечка, браток. Люди простые написали бы (div_by_3(i) && div_by_5(i)). А ты что предлагаешь? Плюс сами "div-by-x?" у тебя не определны. Гонору много, а конкретики мало. Ты нам полностью весь код напиши, чтоб без недомолвок.
Аноним 30/10/17 Пнд 19:39:29 #70 №1084456 
2017-10-3021-37-58.png
>>1084371
>Именно так. Для каждой единицы размерности должен быть свой тип, чтобы не складывать метры и килограммами
Ты реально шизик. Большинство величин -- безразмерные. Вот ето выражение какой тип имеет?
Нет, так-то да, я тайпдефлю подо всё отдельно всегда, но ты же шизик
Аноним 30/10/17 Пнд 20:00:55 #71 №1084476 
>>1084456
>Ты реально шизик. Большинство величин -- безразмерные.
Только если ты решаешь абстрактные математические задачи. ИРЛ всегда ясно где сила тока, а где скорость. Шизики из минобороны США в Аде, например, явно прописали возможность делать type Mass is digits 7 range 0.0 .. 1.0E35;
Аноним 30/10/17 Пнд 20:35:05 #72 №1084507 
>>1084422
Я ему писал выше про булеву алгебру. Но мысля у товарища похоже дальше агресивной утиной трансляции с хачкилей и выдрисов не работает.

>>1084355
Попробуй, писать код исходя из твоих тезисов, попробуй пойти дальше своих чичиковских построений. Пиши конкретный код.
Аноним 30/10/17 Пнд 20:44:49 #73 №1084517 
14396141066330.jpg
>>1084456
>я тайпдефлю подо всё отдельно всегда
>но ты же шизик
Аноним 30/10/17 Пнд 20:56:05 #74 №1084530 
>>1084364
Плебсу слова не давали. Ангуляра наверни, лошара.

>>1084422
Ну подумай сам хоть немножко головушкой, ты же не на лекции. Вот оператор, который возвращает первый валидный аргумент или фейлится, у тебя уже есть. А тебе нужен комбинатор, который берет два предиката и значение, и возвращает значение, если оба предикаты успешны, или фейлится, если хотя бы один предикат фейлится. Ну написал бы я (div-by-3? fn/and div-by-5?) - тебе бы от этого понятнее стало? Нет, не стало бы.
Аноним 30/10/17 Пнд 20:56:41 #75 №1084532 
>>1084507
Пишу. Что сказать-то хотел? Если нечего сказать по теме треда - завали ебало.
Аноним 30/10/17 Пнд 20:59:23 #76 №1084534 
>>1084532

Твой ad hoc полиморфизм нинужен, буде желание -рефлексией обмазываешься и не хардкодишь жесткий контрол-флоу, оправдывайся.
Аноним 30/10/17 Пнд 21:02:31 #77 №1084537 
>>1084534
> типы ненужны
Окай, оно и без типов интересно, ибо позволяет сократить код. Ну и вообще, пусть расцветают тысячи цветов, все дела - смолток охуенный, но я не смолток.
Аноним 30/10/17 Пнд 21:03:02 #78 №1084539 
>>1084530
>Ну написал бы я (div-by-3? fn/and div-by-5?)
>Ну использовал бы я обобщенную функцию, оперирующую значениями, реализующими интерфейс Boolean
>Ну использовал бы я булены, только не называя их буленами

Мало того, что твоя попытка абстрагироваться от практической применимости не слишком-то осмысленна, так еще и огрызаешься на все "неприятные" фразы. Это явно говорит о том, что твоя позиция недостаточно проста.
Попробуй-ка написать хоть одну серьезную программу в правильно-пуристском стиле. Или напиши конпелятор, который такой стиль навязывает. Посмотрим, как запоешь после этого.

Впрочем, можешь не тратить на это время, все равно результат предсказуем. Главное, отучайся хамить. Даже на двачах такое поведение выглядит глупо.
Аноним 30/10/17 Пнд 21:09:06 #79 №1084546 
>>1084539
>Попробуй-ка написать хоть одну серьезную программу
Потрясающее по своей глубине непонимание контекста. Мы тут обсуждаем Programming Language Theory, а не написание оперденей на джаве. Это примерно как приходить к математику и говорить: "попробуй-ка спроектировать хоть один мост своими гамалогиями, посмотрим, как запоешь после этого))"

Канпелятор пишу потихоньку, но тред вообще не об этом.

> отучайся хамить
Во-первых, это интернеты, здесь могут и нахуй послать так что иди нахуй с такими предъявами. Во-вторых, я отвечаю ровно в том тоне, в каком был написан тот пост, на который я отвечаю: за братка и гонор - подумай головушкой, за сжигать живьем - хуй соси, ну и так далее. Но подобные темы лучше обсуждать в /soc или еще где-то, а тут тред про программирование, мммкей?
Аноним 30/10/17 Пнд 21:18:26 #80 №1084557 
ku.jpg
>>1084539
Так мы ж люди от технологий далёкие. Ты всё корабли космические в Большом, а нам конкретики бы. Хотим fizz-buzz увидеть целиком и полностью без всяких додумок. Метни уж бисеры перед свиньями, вашблагородие.
Аноним 30/10/17 Пнд 21:19:10 #81 №1084561 
>>1084530
>>1084557
Ошибся постом.
Аноним 30/10/17 Пнд 21:19:22 #82 №1084562 
>>1084546
>Это примерно как приходить к математику и говорить...
Нет, это примерно как спрашивать математика "зачем ты пришел на завод рассказывать про симплекс-метод? Профит в чем?". Если математик говорит: "смотрите, вот классическая задача раскроя металла; применим ее решение на нашей линии — сократим расходы на X%" — все отлично, к его мнению надо прислушаться, и даже конкретное решение требовать не обязательно — считать и сами умеем. Если же математик отвечает в духе "ну это же важная тема для повышения производительности труда, вы просто ничего не понимаете" — лучше отправить этого математика к станку, пусть продемонстрирует повышение своей производительности более приземленным способом.
Пока что ты накидал тезисов, ценности которой не видно, а их верность — сомнительна.

>а тут тред про программирование, мммкей?
Так и пиши то, что относится к программированию, а не выплескивай свой негатив вместо конструктивного и корректного ответа. Ты ведь пришел про PLT рассказывать, а не свое превосходство в хамстве показывать.

>Во-первых, это интернеты, здесь могут и нахуй послать
Так и иди нахуй, если не понимаешь, что смешение академического апломба с гопничьими ответами выглядит глупо.
Аноним 30/10/17 Пнд 21:23:30 #83 №1084564 
>>1084532
Если бы писал - увидел бы что код - параша получается. Потому что идеи - параша (как любое подражание). Вот это я хотел сказать, но ты ведь не услышишь.
Аноним 30/10/17 Пнд 21:26:57 #84 №1084567 
>>1084562
>превосходство в хамстве показывать.

Пока только в этом и преуспел.

мимо
Аноним 30/10/17 Пнд 21:29:02 #85 №1084568 
>>1084557
> без всяких додумок
На каком языке, але? Я объясняю идею с помощью псевдокода, а ты просишь "без всяких додумок". У тебя только конкретное мышление, как у обезьянок всяких, или что? В чем твой вопрос, что конкретно тебе не понятно?
Аноним 30/10/17 Пнд 21:35:08 #86 №1084572 
>>1084568
На псевдокоде и пиши, попытки же делал, алё?
Аноним 30/10/17 Пнд 21:36:14 #87 №1084573 
>>1084568
У анона то с мышлением все в порядке. Это тебе, по доброте, сакратовским методом пытаются помочь.
Аноним 30/10/17 Пнд 21:39:50 #88 №1084574 
>>1084562
>Профит в чем?
КАК ЭТО УВЕЛИЧИТ НАДОИ ЧУГУНА?! В ЧЕМ ПОЛЬЗА ДЛЯ НАРОДНОГО ХОЗЯЙСТВА?!!

Ну пиздец просто. Математика, если ты не в курсе, - это вещь в себе. Она принципиально не дает и не должна давать никаких "профитов", и никакими "профитами" математики в своей работе не руководствуются. Но доска про математику ---> /math вон там, а мы тут программирование обсуждаем.

Ну и да, если тебя не прет от открытия новых абстракций, паттернов и моделей выполнения, то возможно ты ошибся доской\профессией. Ну, это так, к слову.

>>1084562
>вместо конструктивного и корректного ответа
Ответа на что? Где в этом >>1084539 посте вопрос? Процитируй.

На твой вопрос я как раз ранее ответил, но вместо уточнения непонятных моментов ты начал ныть про ой-ой-ой, как же так, мне на харкаче нахамили. Пиздец просто. Обсуждайте изящные манеры в /cul, а тут доска про программирование, тред про PLT.

Давайте еще раз все вместе: нечего сказать по теме треда - завали ебало.
Аноним 30/10/17 Пнд 21:41:33 #89 №1084575 
>>1084564
Чини libastral, телепат мамкин. Если есть конструктивная критика, то озвучивай, если нечего сказать по делу - иди нахуй.

>>1084572
  (div-by-3? fn/and div-by-5?) => (_ -> "fizzbuzz")
  div-by-3? => (_ -> "fizz")
| div-by-5? => (_ -> "buzz")
| any? => str

autism-intensifies.png

>>1084573
Сакратавским, ат души епт, ага))
Аноним 30/10/17 Пнд 21:46:05 #90 №1084578 
>>1084575
> Сакратавским
Специально оставил, посмотреть, доебешься ли. Там еще с грамматикой проблемы, можешь тоже триггернуться
Аноним 30/10/17 Пнд 21:48:05 #91 №1084581 
>>1084578
> Я не дебил, я только притворяюсь))
Съеби из треда, животное.
Аноним 30/10/17 Пнд 21:51:28 #92 №1084584 
>>1084575
>div-by-x?
Энто ещё что такое? Будьте добры изъясниться. С облаков на землю, таксзать - поближе к народу.
sageАноним 30/10/17 Пнд 21:51:54 #93 №1084586 
DtZhozyvpFQ.jpg
>>1083857 (OP)
Слыш, как сбацать чоткий поиск строки в словаре без буленов-хуюленов и патерн чмонинга? Быра мне псевдокод показал!
Аноним 30/10/17 Пнд 21:53:47 #94 №1084588 
>>1084575
> fn/and
Какой имеет тип?
Аноним 30/10/17 Пнд 22:06:21 #95 №1084594 
>>1084047
> User.EXISTS | User.DOES_NOT_EXIST
Ага, а теперь представь, что у меня есть 2 метода f1 и f2, которые вместо boolean возвращают какие-то свои union типы из 2х значений, и я хочу проверить, условие f1(...) && f2(...)
Аноним 30/10/17 Пнд 22:09:07 #96 №1084597 
>>1084594
Да всё уже, господин из PLT убежал штаны стирать, вряд ли появится.
Аноним 30/10/17 Пнд 22:22:39 #97 №1084606 
>>1084357
>Аргумент уровня "все равно ж все в байтики компилируется))"
ну если пойти еще дальше, то иожно заметить, что оно еще и в инструкции ассемблера транслируется > https://ideone.com/kYuGCy
покормил
Аноним 30/10/17 Пнд 22:36:53 #98 №1084622 
>>1084588
( (x -> x?) (x -> x?) -> (x -> x?) ), не? без карринга пишу, нутыпонел

>>1084586
get : (Map[k,v] k -> v?)

>>1084584
Ну вот если бы ты с этого сразу начал, а не брутфорсил в поисках чего-нибудь эдакого - был бы совсем другой разговор. ^_^

По порядку: x % n == 0.
Во-первых, == должен быть предикатом, то есть иметь иметь тип (x->x?), то есть быть partially-applied с корректным порядком аргументов. Назовем его eq?, чтобы не путать.
Во-вторых, с нулем мы сравниваем остаток, то есть производное от того аргумента, к которому применяется наш предикат. Поэтому надо явно указывать, что возвращаем.
Получается: div-by? x n = (x % n) eq? 0, returning x

Впрочем, есть и другой вариант: принять, что все функции работают с таплами, и фейлить тапл целиком. Это хорошо подходит для функций с несколькими возвращаемыми значениями - тогда можно заиметь настоящий ==, например, который возвращает оба своих аргумента. Алсо, тогда можно условиться, что предикаты всегда возвращают свои (неизмененные) аргументы, но для нормальной реализации придется обмазываться еще и линейными типами.
Аноним 30/10/17 Пнд 22:37:31 #99 №1084623 
>>1084597
Уже соскучился по мне, сладенький? :3 хуй соси
Аноним 30/10/17 Пнд 22:48:53 #100 №1084638 
>>1084622
>( (x -> x?) (x -> x?) -> (x -> x?) )
А в какой момент и за счет чего fn/and стала полиморфной?
Аноним 30/10/17 Пнд 23:00:25 #101 №1084645 
>>1084638
В момент объявления, за счет полиморфизма. Хули тебе не нравится?
Аноним 30/10/17 Пнд 23:04:33 #102 №1084650 
>>1084645
Ну так статические теги у тебя не полиморфны, в конечном счете.
Аноним 30/10/17 Пнд 23:10:53 #103 №1084654 
>>1084650
Так х - это конкрит тайп, а не тег. Теги - отдельная хуйня уровня эффектов. Я ее тут вообще не использовал, чтобы трехэтажный тип не городить.

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

Хотя может и должны. Тут вообще много разных интересных вариантов.
Аноним 30/10/17 Пнд 23:39:53 #104 №1084673 
>>1084654
>Я ее тут вообще не использовал, чтобы трехэтажный тип не городить.

Наверное, стоило бы, потому что пока со стороны это выглядит как махание руками или действия тех шизиков, которые в последовательности Pi ищут цитаты из Библии.
Аноним 30/10/17 Пнд 23:47:46 #105 №1084676 
>>1084673
Если ( (x -> x?) (x -> x?) -> (x -> x?) ) для тебя выглядит как цитата из Библии, то я даже не знаю, чем тебе помочь. Поспрашивай в ньюфаг-треде.
Аноним 31/10/17 Втр 00:02:17 #106 №1084694 
>>1084676
Ты не понял, для меня ты выглядишь как маневрирующий шизик, который хвосты прячет с помощью
>отдельная хуйня уровня эффектов.
Аноним 31/10/17 Втр 00:08:10 #107 №1084697 
>>1084694
Используй гугл, когда встречаешь незнакомые слова.
Аноним 31/10/17 Втр 00:15:54 #108 №1084703 
>>1084697
Ок, ты подебил в этой олимпиаде, братишка.
Аноним 31/10/17 Втр 00:23:07 #109 №1084710 
>>1084703
Да, но только если ты действительно загуглил непонятное слово и узнал что-то новое :3
Аноним 31/10/17 Втр 00:42:38 #110 №1084725 
>>1084048
Ну возьмём к примеру функцию touch_artifact из https://github.com/Vanilla-NetHack/NetHack/blob/master/src/artifact.c
Как обойтись без
>boolean badclass, badalign, self_willed, yours;
?
Аноним 31/10/17 Втр 01:12:13 #111 №1084737 
>>1084710
Да, пришлось гуглить "шизофазия".
Аноним 31/10/17 Втр 01:14:24 #112 №1084739 
>>1084063
>берем левый аргумент и применяем к нему правый аргумент
Из этого объяснения я понял, что сначала мы считаем
(_ -> "fizz")(div-by-3?)
а потом применяем результат к числу, то есть
((_ -> "fizz")(div-by-3?))(42)
Подозреваю, что это неверно, и порядок вычисления всё-таки другой:
(_ -> "fizz")(div-by-3?(42))
Аноним 31/10/17 Втр 01:27:39 #113 №1084743 
>>1084739
Неправильно подозреваешь.
Аноним 31/10/17 Втр 01:29:15 #114 №1084744 
>>1084355
>Мне показалось очевидным и излишним добавлять div-by-3-and-5? кейс, тебе так не кажется?
Ты не понял ситуацию. Мы тут собрались чтоб те в рот нассать.
Первую порцию ты получишь когда напишешь код физбаза полностью за многословность по сравнению даже с императивными вариантами.
А вторую за неэффективность, потому что проверка делимости у тебя в общем случае выполняется 2 раза.
Аноним 31/10/17 Втр 02:14:36 #115 №1084762 
>>1084725
щас бы в сиговне о таких тонких материях думать, ага

Ну вот у тебя, если судить по именам, каноничный пример мизюза буленов. Вместо "булеан БэдКласс" надо писать Класс.Бэд, вместо булеан йоурс - писать Оунер = оунерс.ми, оунерс.аи, оунер.вася.

Код я не смотрел, если что, но идею ты понял.

>>1084737
А надо было гуглить effect types, дурашка.
Аноним 31/10/17 Втр 02:19:43 #116 №1084763 
>>1084739
Порядок вычисления в итоге получается как раз такой, как ты ожидаешь. Просто считай, что это все комбинаторы. f => g берет две функции и возвращает функцию, которая сперва применяет f, потом применяет g. Ну и так далее.

А скобочки сам можешь расставить, да. У => тут приоритет выше, чем у |.
Аноним 31/10/17 Втр 02:20:55 #117 №1084764 
tumblrinlinentjs45TNpj1t5b603250.gif
>>1084744
> физбаз
> неэффективность
> выполняется 2 раза

мы вам перезвоним
Аноним 31/10/17 Втр 02:40:36 #118 №1084773 
>>1084764
Шизя, таблеточки прими.
Аноним 31/10/17 Втр 02:58:26 #119 №1084778 
>>1084762
Можете попробовать придумать хоть один пример, где якобы нельзя обойтись без буленов - поясню, почему это хуевый пример.
@
Приводи конкретный пример конкретного кода - поясню, где ты неправ.
@
Код напиши, инфузория.
@
Опиши конкретнее.
@
Код я не смотрел, если что


>Вместо "булеан БэдКласс" надо писать Класс.Бэд, вместо булеан йоурс - писать Оунер = оунерс.ми, оунерс.аи, оунер.вася.
Пересиль себя и напиши псевдокод. Что такое Класс, что такое Оунерс, как записать вычисление класс и оунер, чтобы повторить логику сишного кода. Вангую что получится многословно и уродливо.

Аноним 31/10/17 Втр 04:08:27 #120 №1084795 
>>1084762
Андрей, я в курсе насчет effect types. Правда, непонятно к чему ты пернул про них. У нас все же не гуманитарное обсуждение, упоминание их не к месту и метафорами не прикроешься.
Аноним 31/10/17 Втр 05:28:08 #121 №1084806 
>>1084762
самое главное, чтобы высокие материи не превращались в лишнее процессорное время
Аноним 31/10/17 Втр 09:27:36 #122 №1084836 
>>1084806
Байтослесаря забыли сппросить.
Аноним 31/10/17 Втр 11:36:05 #123 №1084871 
>>1084546
>Мы тут обсуждаем Programming Language Theory
Это вы тут, батенька, думаете что обсуждаете теорию, а мы наблюдаем разбрасывание какашками. Если твои наблюдения настолько важны как ты думаешь, и если твое мнение имеет хоть какие-то основания кроме завышенного самомнения, ты постараешься его донести в ясной, простой и понятной форме. Если нет - ну и ладно, мало ли сумасшедших.
Аноним 31/10/17 Втр 12:05:07 #124 №1084879 
>>1084836
Программируй на бумаге, в ней байтиков нет.
Аноним 31/10/17 Втр 13:41:16 #125 №1084915 
>>1084773
Нет ты.

>>1084778
Если вы в универе еще не проходили энумы, то это твоя проблема, а не моя. Бесплатно читать тебе лекции по очевидным вещам лично мне неинтересно.

>>1084871
Бла-бла-бла. Съеби с треда\доски, раз тебе нечего сказать по делу.

>>1084806
Как там в 80-ых, братан? :3
Аноним 31/10/17 Втр 13:42:47 #126 №1084918 
>>1084795
> непонятно
Перечитай: >>1084654

Все еще будет непонятно - сформулируй, что тебе непонятно, и задай вопрос.
Аноним 31/10/17 Втр 14:04:24 #127 №1084926 
sf.jpg
>>1084915
>в 80-ых
мечтаем о монадах же
Аноним 31/10/17 Втр 16:38:36 #128 №1085019 
>>1084926
мммм, манатки, сладенькие манатки
Аноним 31/10/17 Втр 20:40:21 #129 №1085141 
>>1084918
Вопрос прозвучал давно, а ты все маневрируешь.

> в выражении div-by-3? fn/and div-by-5?
> какой тип у функции fn/and ? В явном виде, выпиши, ничего не сокращая и не прятая.
Аноним 31/10/17 Втр 21:13:04 #130 №1085154 
>>1085141
>>1084622
>( (x -> x?) (x -> x?) -> (x -> x?) ),
Аноним 31/10/17 Втр 21:27:48 #131 №1085165 
>>1085154
x? <==> Maybe x

??
Аноним 31/10/17 Втр 21:37:56 #132 №1085170 
>>1085154

(x -> Maybe ('div-by-3, x)) -> (x -> Maybe ('div-by-5, x)) -> ( x -> Maybe ('срань-какая-то, x) )

???
Аноним 31/10/17 Втр 22:11:27 #133 №1085187 
>>1085165
>x? <==> Maybe x
Читай оп-пост.

>>1085170
Поэтому я и сказал выше, что пишу без этой срани. Если хочешь в этой срани разбираться - гугли occurence typing, гугли intersection\union types, читай тред короче, выше уже все говорил.
Аноним 01/11/17 Срд 00:03:42 #134 №1085265 
>>1085187
А зачем возвращать maybe из тотально функции?
Аноним 01/11/17 Срд 01:18:48 #135 №1085296 
>>1084915
>энумы
Ты не сказал что это энумы. Твой кусок кода может значить что угодно, в том числе обращение к полю/методу объекта или вызов маняоператора "." с произвольной семантикой.

Какие выгоды даёт предложенная тобой замена "badclass" на "class == Class.BAD"? Добавилась статическая проверка того, что типы у class и Class.BAD одинаковые? Охуенно, но в исходном варианте этого расхождения не могло быть в принципе.
Может теперь мы не сможем ошибочно заменить это выражение на другое, потому что выражение содержит внутри себя типизированные значения?
Нет, ведь значение class мы нигде дальше не используем, а значит вместо "class == Class.BAD" могло быть любое другое выражение, и компилятор был бы столь же доволен.
В итоге мы объявили энум, заморочились с присвоением значений этого энума переменной, в нескольких местах повставляли вместо одного идентификатора "badclass" целое выражение "class == Class.BAD", и не выиграли ничего, а наоборот заметно проиграли в лаконичности, теперь у нас четверть сорцов это объявления энумов, а вхождения булеанов заменились на одинаковые, повторяющиеся выражения.

ЧСХ единственная попытка привести конструктивный аргумент в статье Boolean Blindness связана с тем, что внутри pred надо повторно проверить уже проверенное условие. То есть по мнению автора статьи так делать вроде как плохо. Но ты делаешь ровно это же в своём физзбазе, и это вроде как ок >>1084764
Одному и тому же явлению ты даёшь разные оценки, замечал за собой?

Работаем дальше. Что делает адекватный программист с повторяющимися выражениями в коде? Вычисляет один раз и присваивает переменной.
Какой тип будет у переменной в нашем случае? Хм, шизик-автор спецификации языка запрещает булеаны, хм, а давайте тогда определим тип, значениями которого могут быть только две функции от туплов: first и second. И определим несколько функций от значений этого типа, таких как and, or, not, xor, impl, ... Отлично, теперь нет проклятых булеанов, можно вздохнуть свободно.
Падажжи ёбана, но ведь этот новый тип ничем от булеана не отличается, так нельзя, стираем.
Но снова повторяющиеся выражения, неудобно писать стало. Щя по-другому попробуем выразить логические паттерны. Сука, опять в этих абстракциях типы выражений оказываются не к месту и игнорируются...

В конце концов каждым пользователем языка будет на коленке написана своя реализация, а на фразу НЕ ЮЗАЙТЕ БУЛЕНЫ ПЛИЗ в спецификации будет положен болт.
Большое количеством несовместимых реализаций булеанов - единственное чего можно добиться исключив их из стандарта.
Аноним 01/11/17 Срд 02:07:51 #136 №1085307 
>>1085265
Прочитай тред, в первых постах писал про предикаты без буленов.

>>1085296
Даже не читал твое гуманитарное нытье, извини. Если нечего сказать по теме треда (теория языков программирования) - завали ебало.
Аноним 01/11/17 Срд 02:45:47 #137 №1085312 
>>1085307
Дружок, а
>boolean - говно уровня goto
>паттерн матчинг - говно
>если тебе нужно передавать информацию об ошибке caller'у, значит это не ошибка
это не >гуманитарное нытье
?

Пиздос просто, попросили пояснить за ОП-тезисы - слился и пообещал обосрать код с булеанами, дали код - слился, попросили написать физзбазз - написал половину и слился. PL-теоретик уровня /pr/.
Аноним 01/11/17 Срд 18:54:23 #138 №1085621 
>>1085312
Нет, это не нытье, а тезисы, за которые я пояснил выше по треду. Код с буленами обосрал выше по треду. Физбаз написал, если ты не смог распарсить псевдокод - твои проблемы, на все вопросы по его поводу я ответил. Если ты не знаешь, что такое map, - твои проблемы, опять же.

Ну как бы ладно, мне следовало бы проявить хоть какое-то УВАЖЕНИЕ к тому времени, которые ты потратил на печатание своей простыни, чтобы не выглядеть со стороны троллем. Но понимаешь, лично для меня нет разницы, написал тут анон "мамку твою ебал" или запостил страницу из сочинений Оскара Уайлда - и там, и там ровно ноль информации по теме треда, так что обоих авторов можно (и нужно) смело посылать нахуй.

Но раз уж я сегодня добрый, то давай отвечу такой же портянкой.

> Какие выгоды даёт предложенная тобой замена "badclass" на "class == Class.BAD"?
Какие выгоды дает замена 0x4523452 на &user_name? Ну не знаю, подумай сам, зачем вообще люди придумывают имена и изобретают типы.

Дальше ты вообще хуйню какую-то пишешь. Давай еще раз, для дебилов, почему is_class_bad в общем случае плохо:
1) Нерасширяемо. Если понадобится добавить нейтральный, халяльный или еще какие-нибудь классы - соснешь.
2) Неабстрактно. Детали реализации вытекают наружу.
3) Непроверяемо. Сумтайп компилятор проверяет, а сишный булеан ты, вообще говоря, можешь запихнуть любое вынутое из залупы число.

Все это написано в любой книжке по программированию для чайников. Ты вообще читал хоть что-то про разработку софта? Судя по слогу, ты старшеклассник\студент - ну так читай htdp с sicp'ом, пока время есть, а не сри в абучанах, ну?

> попытка привести конструктивный аргумент в статье Boolean Blindness
ЧСВ до небес. Так и представляю, как читает прыщавик какой-нибудь пейпер Тьюринга или Черча и говорит: "ну одна попытка привести конструктивный аргумент вроде кое-как есть))" Очень смешно. На будущее: если ты чего-то не понимаешь, то проблема обычно в тебе.

> Что делает адекватный программист с повторяющимися выражениями в коде?
> Вычисляет один раз и присваивает переменной.
Без комментариев. Городскую олимпиадку хоть выигрывал на своем паскале, адекватный программист?))00)

> значениями которого могут быть только две функции от туплов: first и second
Я не ебу, откуда ты это высрал. Перечитай тред еще раз и попытайся понять хоть что-то из того, что там написано. Задавай конкретные вопросы, когда что-то непонятно.

> функций от значений этого типа, таких как and, or, not, xor, impl,
fn/and - это комбинатор, дебил. Погугли, что это такое. Блядь, я ведь даже тип написал, причем хуй знает сколько раз.

> в спецификации
В какой спецификации, долбоеб малолетний? ПРЕДИКАТЫ ВОЗВРАЩАЮТ СВОЙ АРГУМЕНТ - что тебе в этой фразе непонятно?

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

Подытожим: ты не понял ни одного предложения из тех, что были тут написаны, но срешь в тред своими идиотскими портянками. Нахуя? Либо иди читай книжки, либо попытайся подумать головой и понять, о чем идет речь, задавая вопросы, если тебе непонятно. Спорить о чем-то, в чем ты не шаришь даже на базовом уровне - это выставлять себя обезьяной.

Вот видите? Я не тролль, отвечаю конструктивно даже последним дебилам, трачу время на тыкскызыть просвещение подрастающей молодежи.
Аноним 01/11/17 Срд 23:35:46 #139 №1085827 
>Код с буленами обосрал выше по треду
Обосрал тем, что обидно назвал его "каноничным примером мизюза буленов"? Не засчитано.

>Физбаз написал
Ты сделал детсадовскую ошибку забыв про случай (x % 15) = 0
Когда тебя в это ткнули ты спохватился и написал (div-by-3? fn/and div-by-5?).
Решение получилось так себе, так как функции div-by-3? и div-by-5? вызываются по два раза вместо одного. Поста с полной версией кода от начала до конца мы от тебя так и не дождались.

>Какие выгоды ...?
>подумай сам
Я уже подумал, и даже расписал свои рассуждения.

>зачем вообще люди придумывают имена
У булеана уже было имя, аналогия не работает.

>Если понадобится ... - соснешь.
Переход от "badclass" к "class == Class.BAD" осуществляется легко. Значит если есть возможность не соснуть имея "class == Class.BAD", то и с "badclass" сосать не обязательно.

>"badclass" - Детали реализации вытекают наружу
>"class == Class.BAD" - чётенькая инкапсуляция
Перетолстил

>Непроверяемо
Да, непроверяемо, ровно как и твой вариант. Я уже писал об этом.

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

>Я не ебу, откуда ты это высрал.
google://Church Booleans

>это комбинатор, дебил
А выглядит как функция высшего порядка.

>ПРЕДИКАТЫ ВОЗВРАЩАЮТ СВОЙ АРГУМЕНТ
Ты вкладываешь в это слово смысл, ясный только тебе. Для нормальных людей
>Предикат в программировании — выражение, использующее одну или более величину с результатом булева типа.
Аноним 01/11/17 Срд 23:53:07 #140 №1085846 
>>1085827
>Не засчитано.
Ну так ты прочитай пост целиком, а не только первое предложение.

>div-by-3? и div-by-5? вызываются по два раза вместо одного
Мы вам перезвоним. Нет, ты серьезно не понимаешь, что когда ты пойдешь на интервью, от тебя все будут ждать именно этого - очевидного и простого - решения? Как бы суть физбаза именно в этом. Но это так, на будущее тебе.

> это комбинатор, дебил
> А выглядит как функция высшего порядка.
Лол. Погугли, что такое комбинатор. Ох, лол. Хоть в рамочку и на стенку вешай.

> Ты вкладываешь в это слово смысл, ясный только тебе
Перечитай тред с самого начала, я несколько раз объяснил, какой смысл я в это слово вкладываю.

А лучше - съеби с треда. Не перечитывай, не надо оно тебе.

Признаю свою ошибку; ты - тупое, необучаемое говно, неспособное не только написать что-то полезное по теме треда, но и даже просто понять, о чем тут идет речь. Бесполезный, безмозглый нытик. Съеби.
Аноним 02/11/17 Чтв 01:02:28 #141 №1085901 
>>1085846
>прочитай пост целиком, а не только первое предложение.
Прочитал. Обсирания нет и в принципе быть не может, ведь ты сам признал что код не читал.

>будут ждать именно этого - очевидного и простого - решения
Больше поинтов даёт вариант с булеанами + пояснение что самодокументируемый код это хорошо.

Заметил также, что определил ты "div-by? x n", а используешь div-by-3? и div-by-5?
Похоже ты просто не способен написать физзбаз.

>какой смысл я в это слово вкладываю
Вместо того чтобы назначать слову новый смысл возьми другое слово, шизик.
Аноним 02/11/17 Чтв 02:00:59 #142 №1085924 
>>1085901
Шизик запутался в показаниях, всего - то. У него там функции не полиморфные, приходится выкручиваться с помощью разбрасывания какашек.
Аноним 02/11/17 Чтв 04:50:02 #143 №1085987 
>>1085901
>возьми другое слово
Хорошо, у меня есть одно слово, специально для тебя: СЪЕБИ

>>1085924
(x -> x?) неполиморфная функция? Ну кул стори, бро.
Аноним 02/11/17 Чтв 08:19:27 #144 №1086005 
C
/тред
Аноним 02/11/17 Чтв 15:42:53 #145 №1086132 
autism.jpg
>>1086005
Аноним 02/11/17 Чтв 16:05:11 #146 №1086147 
>>1086005
Самый хуёвый язык всех времен и народов, кстати. Хуже только скобочное говно.
Аноним 02/11/17 Чтв 19:57:12 #147 №1086327 
Официальный канал Групоид Инфинити в телеграме:

http://t.me/groupoid

Они пилят то же самое!
Аноним 02/11/17 Чтв 21:25:11 #148 №1086404 
А чому мейби, а не айзер?
Аноним 02/11/17 Чтв 22:33:14 #149 №1086482 
>>1086327
Надувать щеки Xor Пилить.
Аноним 02/11/17 Чтв 22:37:54 #150 №1086484 
>>1086404
Потому что проброс при фейле должен происходить прозрачно, а айзеру нужны два юзер-сапплид значения. Айзер из мейби получается элементарно.

> - если тебе нужно передавать информацию об ошибке caller'у, значит это не ошибка
Аноним 03/11/17 Птн 08:45:28 #151 №1086650 
ОП долбоеб неспособный к цивильной дискуссии, который только и умеет, что всех несогласных обзывать долбоебами и орать "съеби"
Аноним 03/11/17 Птн 17:03:05 #152 №1086759 
>>1086650
Мне пока не с кем тут вести дискуссию. Никто не смог написать ничего по делу, никто не вкатился со своим языком. Вот и ты - обиженный школьник, чье мнение очень важно для нас. Съеби.
sageАноним 03/11/17 Птн 20:30:11 #153 №1086842 
>>1086759
Да у нас же тут НЕПРИЗНАННЫЙ ГЕНИЙ, под которого все должны подстраиваться.
Аноним 03/11/17 Птн 23:16:47 #154 №1086911 
>>1086842
Мне похуй, под кого ты подстраиваешься. Просто съеби, если тебе нечего сказать.
Аноним 04/11/17 Суб 01:02:39 #155 №1086946 
Vqr4p1E.png
ITT
sageАноним 04/11/17 Суб 02:02:15 #156 №1086961 
>>1086946
найс
Аноним 04/11/17 Суб 07:27:49 #157 №1086993 
Пиздец, какой же ОП хуй немогущий написать элементарный фазбаз с использованием своих тезисов из ОПа, что ясно демонстрирует их ненужность и убогость.
Аноним 04/11/17 Суб 10:07:35 #158 №1087022 
Максимка из ЖЖ протёк.
Аноним 04/11/17 Суб 17:11:35 #159 №1087156 
>>1086946
>>1086961
>>1086993
>>1087022
Спасибо за бампы, мои юные друзья :3
Аноним 05/11/17 Вск 02:17:43 #160 №1087366 
Бамп
Аноним 05/11/17 Вск 12:38:26 #161 №1087448 
>>1086759
ты жалок
Аноним 05/11/17 Вск 20:00:25 #162 №1087623 
>>1087366
:3
Аноним 07/11/17 Втр 00:25:21 #163 №1088083 
Блядь, я думал это какой-то ебаный прикол, а пацаны ведь и вправду свой млтт хуев пилят: https://github.com/groupoid/infinity

Бля, я бы вкатился.
Аноним 07/11/17 Втр 07:45:11 #164 №1088151 
>>1088083
Максим, твои поделки обречены на провал. Ты никого не уважаешь, позволяешь себе оскорблять других, истеришь как девченка. Логично, что после всего этого, тебя никто за полноценного не принимает.
Аноним 07/11/17 Втр 12:33:56 #165 №1088229 
>>1084622
Вот писал бы сразу такие простыни или давал бы ссылку на текст, где аналогичное написано, цены бы не было твоим вбросам. Специально ждёшь, пока анон угадает, какой правильный вопрос тебе задать?
Сигму через Пи закодировал уже?
Аноним 07/11/17 Втр 14:44:28 #166 №1088275 
>>1088151
Нахуй пошел, девственник говноебанный. На самом деле меня максимка никогда не посылал, так что я не умею под него мимикрировать.

>>1088229
Ну я вообще-то рассчитывал зафлеймстартить обсуждение, а не личный бложек тут устраивать.

> Сигму через Пи закодировал уже?
А надо? Ну, то есть мы наш палочный оператор выбора можем сделать асинхронным, хуе-мое, чики-брики, там что-то нормальное получится, но я не пробовал. А объекты тут вообще нахуя? Ты же про сигму от луки? Короче, разверни мысль.
Аноним 07/11/17 Втр 14:54:27 #167 №1088280 
>>1088275
Знатно тебя подорвало. Значит я в точку попал.
Аноним 07/11/17 Втр 15:33:16 #168 №1088291 
>>1088280
Э? autism-intensifies.png
Аноним 07/11/17 Втр 15:56:50 #169 №1088303 
>>1088275
пока что как раз больше похоже на комментарии в твоем личном бложике
Аноним 07/11/17 Втр 16:09:30 #170 №1088306 
>>1084622
>eq? : x->x?
>div-by? x n = (x % n) eq? 0, returning x

Но ведь в этом выражении eq? : x->x->x?
Запятая - это что-то типа bind (мы же в монадке Maybe)?
Аноним 07/11/17 Втр 16:32:21 #171 №1088319 
>>1088303
Вот и я о том. Спалился, явно стиль письма похож.
Аноним 07/11/17 Втр 18:46:33 #172 №1088389 
>>1088303
>>1088319
Хорошо, уговорили. Я спалился, я - максимка. Теперь сосите хуй, нищеброды ебаные, ахахахаха.
Аноним 07/11/17 Втр 19:00:20 #173 №1088398 
Какие же у меня охуенные волосы. Все кришнаиты завидуют. Пойду нарисую еще один автопортрет.
Аноним 07/11/17 Втр 19:08:20 #174 №1088405 
Блядь, какой же я охуенный, вот если так посмотреть. Единственный недостаток - пишу на английском как нигер из мексики с пятью классами баптисткой школы и шизофренией.
Аноним 07/11/17 Втр 19:10:17 #175 №1088408 
>>1088405
Это да, и ещё бородка козлиная не очень. А так нормально.
Аноним 07/11/17 Втр 19:13:57 #176 №1088413 
>>1088408
Просто ты долбоеб :-) Если аргументов по сути нет вини Буддизм во всем и медитации, ага. Иди триммер купи.
Аноним 07/11/17 Втр 19:14:56 #177 №1088416 
>>1088405
У тебя походу от амфетамина уже крыша протекла.
Аноним 07/11/17 Втр 19:15:06 #178 №1088417 
>>1088413
Не понял, мне-то триммер нахуя?
Аноним 07/11/17 Втр 19:16:06 #179 №1088418 
>>1088417
Перед тем, как заходить в этот тред, надо включать мозг. Те, кто этого не делают, будут посланы нахуй быстрее, чем они успеют сказать "не понял".
Аноним 07/11/17 Втр 19:16:45 #180 №1088419 
>>1088418
А я и не выключал!
Аноним 07/11/17 Втр 19:17:17 #181 №1088420 
>>1088416
Если аргументов по сути нет вини Буддизм во всем и психоактивные вещества, ага. Иди соли на рампе закажи.
Аноним 07/11/17 Втр 19:17:35 #182 №1088421 
>>1088419
Ты какой-то булшит пишешь. По делу есть чо?
Аноним 07/11/17 Втр 19:18:10 #183 №1088422 
>>1088421
Есть, но тебе не скажу.
Аноним 07/11/17 Втр 19:18:32 #184 №1088423 
>>1088422
ОК, еще инстайты есть у тебя?
Аноним 07/11/17 Втр 19:18:49 #185 №1088424 
>>1088423
Нет, больше нет.
Аноним 07/11/17 Втр 19:19:25 #186 №1088425 
>>1088424
Ты долбоеб. Тебе не на дваче нужно сидеть, а по больше по сторонам оглядываться :-)
Аноним 07/11/17 Втр 19:20:00 #187 №1088426 
>>1088425
И чо хорошего я там увижу? Лучше уж на дваче.
Аноним 07/11/17 Втр 19:20:41 #188 №1088428 
>>1088426
Если ты не понял мысль в посте, я объяснять ее не буду. Твой бред начинает надоедать.
Аноним 07/11/17 Втр 19:21:46 #189 №1088429 
>>1088428
Я не просил тебя объяснять. Объясни лучше, как ты одновременно постишь в твитор, на двач, в телегу и в гитхаб
Аноним 07/11/17 Втр 19:23:59 #190 №1088432 
>>1088429
> обисни™
Мне похуй что ты про меня думаешь.
Твои рецензии и замечания не стоят нихуя.
Аноним 07/11/17 Втр 19:25:55 #191 №1088433 
>>1088432
Мне похуй, что тебе похуй! Бака!
Аноним 07/11/17 Втр 19:26:47 #192 №1088434 
>>1088433
Мне тоже похуй, что ты долбоеб :-)
Аноним 07/11/17 Втр 19:27:18 #193 №1088435 
>>1088432
Если бы тебе было все равно, ты бы даже не зашел сюда. Тебя очень волнует мнение окружающих.
Аноним 07/11/17 Втр 19:27:42 #194 №1088436 
>>1088434
Как хорошо, что мы в согласии.
Аноним 07/11/17 Втр 19:28:10 #195 №1088437 
>>1088435
Да при чем тут не зашел, ноль информации в твоих каментах.
Такое ощущение что ты перед кем-то выйобуешься.
Передо мной не нужно, для меня ты никто.
Аноним 07/11/17 Втр 19:28:12 #196 №1088438 
>>1088435
С такой терминальной энцефалопатией его, наверное, уже ничего не волнует.
Аноним 07/11/17 Втр 19:39:23 #197 №1088441 
>>1088437
Инфы в том, что те кого не интересует мнение других, просто проходят мимо. Кто не ищет славы, тот не пишет в интернете громкие посты, матеря кого-то, и оправдывая себя. Не носит длинные волосы с козлиной бородой. Не одевается в разноцветную одежду, специально. Не применяет различные жаргонизмы. Ну и т.д. и т.п.

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

>выйобуешься
Даже мат правильно написать не смог. Выёбываешься надо писать.
Аноним 07/11/17 Втр 19:41:50 #198 №1088444 
>>1088441
Тебе никто ничего не собирается доказывать, научись думать своей головой и не строй обиженку.
Аноним 07/11/17 Втр 19:43:51 #199 №1088447 
>>1088441
Сукабля, узнал себя в этом описании, только борода ещё до такой степени не отросла. Можно мне тоже теперь коммитить в кубикал?
Аноним 07/11/17 Втр 19:44:57 #200 №1088448 
не тред, а параша ослиная
Аноним 07/11/17 Втр 19:52:39 #201 №1088458 
>>1088444
>Тебе никто ничего не собирается доказывать
Ой, как же я теперь жить то буду.

>>1088444
>научись думать своей головой
Высказал исключительно собственное мнение, не основанное на мнениях других. Никогда ничего не делал/не думал, из-за того что все так делают/думают.

>>1088444
>не строй обиженку
Так не я же обвиняю всех вокруг. Обиженка винит всех вокруг в своих неудачах.
sageАноним 07/11/17 Втр 20:02:47 #202 №1088460 
>>1088441
Этот анон прав, ОПчик настолько "гений", что разводит срач в своем же треде.

/тхреад
Аноним 07/11/17 Втр 20:17:24 #203 №1088469 
>>1088460
По моим тредам можно теорию типов учить.

>>1088458
Отвечать не буду, но с поста проиграл.
Аноним 07/11/17 Втр 20:19:45 #204 №1088470 
>>1088469
>По моим тредам можно теорию типов учить.
Хороший мем.
Аноним 07/11/17 Втр 20:19:55 #205 №1088472 
>>1088469
>Отвечать не буду
Но все же ответил. Вот видишь, все ведь в точку. Кому не интересно, тот проходит мимо. Молча.
Аноним 07/11/17 Втр 20:20:33 #206 №1088473 
>>1088472
Мне вообщем-то всё не похуй, везде сую свой нос, как-то так..
Аноним 07/11/17 Втр 20:21:44 #207 №1088474 
>>1083857 (OP)

http://lambda-the-ultimate.org/

Кто нибудь может объяснить что это? Дизайн вырви глаз, юзабилити никакое. Не понял вообще о чем сайт
Аноним 07/11/17 Втр 20:23:58 #208 №1088477 
995w3.jpg
>>1088474
Аноним 07/11/17 Втр 20:40:53 #209 №1088487 
59236923509.png
:3
Аноним 07/11/17 Втр 21:09:54 #210 №1088497 
>>1088487
Фотошоп. Ссылку давай.
Аноним 07/11/17 Втр 21:12:23 #211 №1088499 
q.png
>>1088474
очевидно же, что это прорыв в программировании, а не цирк одного семена
Аноним 07/11/17 Втр 21:18:11 #212 №1088503 
>>1088499
Ну и кому это нужно? Ты скажи какую цель преследует сайт. Если хочешь его популяризовать, объясни народу для чего он.
Аноним 07/11/17 Втр 21:26:42 #213 №1088508 
>>1088503
Пошел нахуй из треда, собака. Не забудь на минусик в оп-посте нажать.
Аноним 07/11/17 Втр 21:35:52 #214 №1088514 
>>1088291
Шизофазия на максимум! вот что это была, Лука блядь

мимо
Аноним 07/11/17 Втр 21:38:29 #215 №1088515 
>>1088514
Сигма-калькулюс Луки Карделли.

Ты сейчас выглядишь примерно как биомасса, зашедшая на доску про физику и высравшая: "Вот что это было: кванты, бор блядь! Шизофазия на максимум!"
Аноним 07/11/17 Втр 21:43:28 #216 №1088523 
>>1088508
>Не забудь на минусик в оп-посте нажать.
Не забуду. Только не на минусик нажму, а на восклицательный знак.
Аноним 07/11/17 Втр 22:01:00 #217 №1088529 
>>1088306
>Но ведь в этом выражении eq? : x->x->x?
Это ты типо приебался, что оно должно называться make-eq, или что? Ну, по идее да, это генератор предикатов получается. Но нахуй об этом думать - к тому же, как я выше написал, лучше получится, если функции будут работать с таплами.

>Запятая - это что-то типа bind (мы же в монадке Maybe)?
Хм, ну не совсем. (Иногда запятая - это просто запятая, лол.) Сам бинд зашит в семантике языка. returning x - это Just-кейс бинда. В принципе можно переписать это с континуэйшеном k, тогда будет k x, а само выражение с предикатом задает сам дататайп, который мы биндим к k, как-то так.

Но опять же, это все хуйня. Если у нас функции работают с таплами и есть линейные типы, то мы можем просто всегда передавать в предикаты read-only ссылки. Тогда предикатам вообще не нужно принимать и возвращать обратно свой аргумент, они просто могут либо фейлиться, либо нет, то есть чистый контрол флоу, абстракция буленов с бранчами.
Аноним 07/11/17 Втр 22:02:43 #218 №1088531 
Алсо, проиграл как бешеный с треда, и теперь уловил суть >>1088229 вопроса про сигму и пи, лол. слоупок.жпг
Аноним 07/11/17 Втр 22:04:07 #219 №1088532 
>>1083857 (OP)

https://2ch.hk/pr/

Кто нибудь может объяснить что это? Дизайн вырви глаз, юзабилити никакое. Не понял вообще о чем сайт
Аноним 07/11/17 Втр 23:40:13 #220 №1088580 
>>1088529
>Это ты типо приебался, что оно должно называться make-eq, или что?
Это я пытаюсь понять что ты понаписал. Т.е. тип x? всё-таки синоним (x->x) и итоговый тип предиката (x->x->x) ?

>к тому же, как я выше написал, лучше получится, если функции будут работать с таплами.
Ну ок, каррирование послали в жопу. Но не получится ли так, что в процессе вычислений таплы будут упакованы в таплы, которые упакованы в таплы итд?

>Сам бинд зашит в семантике языка
>returning x - это Just-кейс бинда
Это-то как раз понятно. Непонятна была запятая.

>чистый контрол флоу
Изобретён data-driven programming ?
Аноним 08/11/17 Срд 00:13:27 #221 №1088586 
>>1088515
Я в курсе насчет трудов почтенных Луки и Милнора, не кукарекай.
Аноним 08/11/17 Срд 00:16:19 #222 №1088587 
>>1088580
>тип x? всё-таки синоним (x->x)
Шта? Нет. x? - это, грубо говоря, Maybe x. Только мейби неявно и наружу в типы не торчит.

>eq? : x->x?
Заметил сейчас в твоем предыдущем посте - я вот этого нигде не писал же. (eq? x:X) : X -> X?. Предикат всегда возвращает x?, поэтому если доебываться, то eq? - не предикат (ибо никогда не фейлит), а (eq? 1) - уже предикат. Но опять же, все это нахуй, если мы с таплами работаем.

> каррирование послали в жопу.
Не, просто нескучный синтаксис для него придумали.

> таплы будут упакованы в таплы
Я еще в прошлом посте об этом хотел написать :3
Да, нам нужны нескучные таплы: <x> . <y> => <x y>, x => <x>. В частности, map : ([x] (x -> y) -> [y]) на самом деле принимает [<x1..xn>] хуевину, все данные гоняются запакованными в структ. Но это оптимизировать обратно нетрудно. Тут есть, разумеется, подводные камни, но я эту хуйню придумывал ОЧЕ давно, неделю назад вот наткнулся на старые черновики и запилил тред, чтобы по ходу дела хоть что-то вспоминать.

> data-driven programming
М? Я просто имею в виду, что предикаты тогда не могут влиять на данные в программе, то есть КОНЦЕПТУАЛЬНО контрол флоу отделяется от данных (в отличие от буленов, которые это в некотором смысле коуплят).
Аноним 08/11/17 Срд 00:17:07 #223 №1088588 
>>1088586
А, мисфайр. Я думал >>1088514 отвечал на >>1088275.
Аноним 08/11/17 Срд 01:24:14 #224 №1088603 
Вообще, листаю сейчас всю эту хероту - блин, жалко, что не допилил.

Алсо, если тебе интересно, откуда у этой хуйни ноги растут (ты там выше ссылки на тексты реквестировал): в начале был форт, который пизда, конечно, и у него был функциональный братик - Joy, но он был нетипизированным, и был еще Factor, который тоже был нетипизированный, но господин Слава Пестов запилил там оче симпатичную библиотеку комбинаторов (и дохуя всего еще запилил, вообще пароход и человек), и еще был Jon Purdy (sic!), у которого был Kitten, который был типизированный, но недостаточно типизированный. А, еще XY был и дюжина вариаций на тему "а давайте вместо стека что-нибудь нескучное впихнем". Но основная проблема в том, что все оно было row polymorphic, а потому нихуя не типизировалось, плюс всякие интересные комбинаторы зачастую вообще whole-stack operations используют, что пизда. А без нескучных комбинаторов получается point-free haskell, то есть УГ. Но не конкатенативщиной же одной, есть еще APL (J, K...), которые тоже tacit. Короче, в итоге вырисовывалось что-то среднее, где по-прежнему конкатенация = композиция, но без злоебучего стека. И тайп инференс только локальный, но это даже хорошо. Можно делать cleave\spread\bi, можно делать вилки с хуками, можно грабить корованы. Дальше, еще был Icon c его goal-directed execution - отсюда тема про предикаты, которая отлично ложится на конкатенативщину (ну потому что обычный x -> Bool предикат съедал бы аргумент, так что его бы пришлось либо клонировать, либо использовать joy-style ифы с лямбдами, но там вылазит row polymorphism, хуй пизда). А еще вместо х-ля с манатками был Clean c uniqueness types - олдфаги не помнят, ньюфаги не знают. И опять это все идеально ложится на конкатенативщину: мы же в любой функции либо явно возвращаем аргумент, либо явно же его дропаем. Ну, можем еще явно его дублировать. То есть без всяких костылей, очевиднейший тип для print : (World Str -> World). А тут еще такая хуйня с этими линейными типами: мы же можем обновлять внешне иммутабельные структуры in-place! Блядь, да мы же можем даже гц выкинуть (спойлер: ага, щас)! Тут меня, короче, понесло, и я захотел высокоуровневый конкурентный конкатенативный функциональный низкоуровневый язык для байтоебства без рантайма с intersection\union\row types, эффектами, predicate dispatch, occurence typing, compile-time gc, завтипами, пиздой твоей мамаши, макросами (разумеется) и главное - БЕЗ ЕБАНЫХ МАНАТОК, АХАХАХАХА! Ну, надо ли уточнять, что закончилось все это весьма предсказуемо, особенно учитывая мое образование в виде девяти классов церковно-приходской школы. Как-то так.

Да, так что каким бы психопатичным мудаком максимка не был, как человек своего дела он охуенный и я ему завидую. Лангуаж рисерч - это оче круто и вообще наркотик, а если это еще и твой основной оккупейшен - то ты воще малаца, батя точно одобряет. Да и в целом русское ФП-комьюнити, несмотря на всю его ебанутость, вызывает у меня - стороннего, в общем-то, наблюдателя - исключительно теплые чувства: ностальгию и светлую грусть.
Аноним 08/11/17 Срд 01:27:05 #225 №1088608 
А, ну и еще там рекурсия реализуется через комбинаторы (джой, фактор), так что можно вообще запретить явную рекурсию и попробовать получить - опять же, очень натурально и интуитивно - интересный саб-тьюринг лангаж.
Аноним 08/11/17 Срд 01:35:32 #226 №1088612 
>>1088603
>но он был нетипизированным,
Вообще то типизирован, но динамическая типизация, да. Joy - охуенный язык для преподавания PLT, в особенности для объяснения денотационной семантики.
Аноним 08/11/17 Срд 02:17:55 #227 №1088622 
>>1083857 (OP)
Так это говно будет быстрее хаскеля или можно сразу тебя нахуй слать?
Аноним 08/11/17 Срд 07:18:41 #228 №1088667 
>>1088622
Делай как успешные люди: сперва посылай, а потом думай, стоило ли.
Аноним 09/11/17 Чтв 15:34:02 #229 №1089316 
Обратил внимание, что Хикка в новой версии кложи тоже перешел на стиль из оп-поста:

(defn spec?
"returns x if x is a spec object, else logical false"
[x]
(when (instance? clojure.spec.alpha.Spec x)
x))
Аноним 09/11/17 Чтв 15:41:59 #230 №1089332 
>>1089316
Это не стиль, предложенный ОПом, это традиционная характерная для лиспов дичь
comments powered by Disqus