@frp_ru

Страница 214 из 420
分解物質
12.10.2017
14:31:37
https://youtu.be/JYG5LFHkUuE?t=1h9m17s учасников коммитета C++ спрашивают что такое монада

andretshurotshka?❄️кде
12.10.2017
14:31:56
лол

Denis
12.10.2017
14:36:04
С++ не нужен! Даёшь раст!

Юрий
12.10.2017
17:41:39
Кстати, тому, кто писал пост в телеграф из шапки — отдельное спасибо за ruhaskellbook. Прям очень годно.

Google
code4aman
12.10.2017
18:50:26
https://www.youtube.com/channel/UCEtohQeDqMSebi2yvLMUItg 6 часовые доклады ?

? animufag ?
12.10.2017
18:54:43
ого

yesod 2k17

code4aman
12.10.2017
18:54:55
воркшопы то есть

Taras
12.10.2017
19:51:15
Привет, я нуб в фп. Посоветуйте либу с монадами. Все, что нашел https://monet.github.io/monet.js/ https://github.com/dustinws/zoom

можна юзать это?

illiatshurotshka❄️
12.10.2017
19:58:42
https://github.com/sanctuary-js/sanctuary ?

но лучше сразу purescript

Kelin
12.10.2017
20:00:11
kana
12.10.2017
20:01:12
Почему ор?

Kelin
12.10.2017
20:03:48
Почему ор?
Ну челик написал, что он нуб и кидает либу в жс Как думаешь, готов ли он к пурсе?

kana
12.10.2017
20:05:13
Ну на пурсе проще в монады въехать будет, чем в жс. Да и имхо пурса проще жс, сложно лишь поначалу мозги правильно поставить. Но если он уже ищет монады на жс, то значит уже вполне готов

Писал как-то друг на жс с монадами сложный код, ебануться можно было. А потом я на пурсе написал, все просто до невозможности

Google
Kelin
12.10.2017
20:13:50
есть вероятность, что он просто увидел умное слово и пошел искать либу для этого сразу

всегда нужно учитывать этот фактор

illiatshurotshka❄️
12.10.2017
20:15:08
не нужно подразумевать

? animufag ?
12.10.2017
20:41:49
Ну наверное монады на жс для обучения

Хз зачем их на серьёзе использовать

illiatshurotshka❄️
12.10.2017
20:43:41
нулл предлагаешь?

? animufag ?
12.10.2017
20:49:36
Нулл всё равно остаётся

Или бинд спасает?

illiatshurotshka❄️
12.10.2017
20:50:11
ну нулл точно не будет на твоей стороне

? animufag ?
12.10.2017
20:50:53
Нулл всегда против меня

andretshurotshka?❄️кде
13.10.2017
02:50:57
?

Даниил
13.10.2017
06:48:34
Хз зачем их на серьёзе использовать
промисы тоже для обучения?)

tusaeff
13.10.2017
07:03:13
Добавить [key:

? animufag ?
13.10.2017
08:41:04
промисы тоже для обучения?)
Хм, пожалуй нет)) Пожалуй штука для работы с асинхронщиной не для обучения. Получается моё допущение ошибочно и абстракция реализуемая на инородной модели полиморфизма тоже не для обучения

andretshurotshka?❄️кде
13.10.2017
17:01:26
PCJ: Rewrite haskal in rust! http://ift.tt/2yeYy62 http://ift.tt/2g781BR

Даниил
13.10.2017
17:04:11
Хм, пожалуй нет)) Пожалуй штука для работы с асинхронщиной не для обучения. Получается моё допущение ошибочно и абстракция реализуемая на инородной модели полиморфизма тоже не для обучения
просто промис — такая немного кривая, но монада (кривая потому что авторы спецификации опять намудрили с неявным приведением типов, поэтому then ведёт себя и как функторный map, и как монадический chain) а сама по себе монада — просто паттерн (на самом деле все эти штуки из ТК и алгебры, применяемые в программировании — те же ООП-паттерны, только лучше формализованные и имеющие под собой теоретическую основу) так вот понимать что такое функтор, монада и т.д. нужно чтобы каждый раз не переизобретать колесо: видишь что то что ты пишешь напоминает уже знакомый тебе паттерн — оформляешь код по всем формальным правилам этого паттерна и указываешь, что это за паттерн, чтобы тому кто читает твой код было проще понять что к чему и это вполне применимо и полезно и в JS, несмотря на то что его система типов даже со всякими Flow гораздо меньше помогает в работе с подобными паттернами, чем нормальные системы типов

? animufag ?
13.10.2017
17:06:12
просто промис — такая немного кривая, но монада (кривая потому что авторы спецификации опять намудрили с неявным приведением типов, поэтому then ведёт себя и как функторный map, и как монадический chain) а сама по себе монада — просто паттерн (на самом деле все эти штуки из ТК и алгебры, применяемые в программировании — те же ООП-паттерны, только лучше формализованные и имеющие под собой теоретическую основу) так вот понимать что такое функтор, монада и т.д. нужно чтобы каждый раз не переизобретать колесо: видишь что то что ты пишешь напоминает уже знакомый тебе паттерн — оформляешь код по всем формальным правилам этого паттерна и указываешь, что это за паттерн, чтобы тому кто читает твой код было проще понять что к чему и это вполне применимо и полезно и в JS, несмотря на то что его система типов даже со всякими Flow гораздо меньше помогает в работе с подобными паттернами, чем нормальные системы типов
Аа ты привёл инстанс монады как довод в необходимости всей абстракции

Google
Дмитрий
13.10.2017
17:07:40
Внезапно пришла в голову идея как сделать типизированный интероп между flow и purescript - в последнем удобный механизм foreign import, ввиду чего можно описать примитивные монадические типы на flow (уже), а в purescript юзать их как нормальные тайпклассы

Таким образом можно будет писать сложные куски кода на пурсе и не терять в типизации остального кода

? animufag ?
13.10.2017
17:09:40
звучит как очень плохо всё

Дмитрий
13.10.2017
17:11:28
Так обратно же проблем и не было

Что меня и парило, под крутым интеропом авторы почему то решили подразумевать только одностороннее движение от жс к пурсе, что здорово но слишком оптимистично

звучит как очень плохо всё
Да не, наоборот, от жс в таком случае требуется минимум - просто нормально типизировать сами объекты/классы, создаваемые пурсой чтобы прочесть результаты. При этом тайпклассы и прочие абстрактные вещи остаются в том окружении в котором с ними удобнее работать

? animufag ?
13.10.2017
17:15:55
просто промис — такая немного кривая, но монада (кривая потому что авторы спецификации опять намудрили с неявным приведением типов, поэтому then ведёт себя и как функторный map, и как монадический chain) а сама по себе монада — просто паттерн (на самом деле все эти штуки из ТК и алгебры, применяемые в программировании — те же ООП-паттерны, только лучше формализованные и имеющие под собой теоретическую основу) так вот понимать что такое функтор, монада и т.д. нужно чтобы каждый раз не переизобретать колесо: видишь что то что ты пишешь напоминает уже знакомый тебе паттерн — оформляешь код по всем формальным правилам этого паттерна и указываешь, что это за паттерн, чтобы тому кто читает твой код было проще понять что к чему и это вполне применимо и полезно и в JS, несмотря на то что его система типов даже со всякими Flow гораздо меньше помогает в работе с подобными паттернами, чем нормальные системы типов
тайпклассы не выражаются в ооп ооп паттерны лучше не с чем не сравнивать. просто набор эвристик нароботанных годами, в них нет смысла. да, иметь ввиду что нечто является монадой можно. но в целом всё напоминает как несколько лет назад на хабре появлялись монада-туториалы. ну и там либо чел рассказывал что вот нулейбл или список монада, и показывал что его мапать можно. ну и прочие частные случаи код обобщённый над монадами таким образом конечно не появляется

Дмитрий
13.10.2017
17:31:00
Тут даже гадать не надо

? animufag ?
13.10.2017
17:31:15
ну так они подаются людям которые не верят что монады нужны

Дмитрий
13.10.2017
17:32:13
js Array отлично подходит для объяснения концепции, так как даёт хорошую интуицию для коммутативной диаграммы

? animufag ?
13.10.2017
17:32:32
и тип такие умники - смотрите у вас тут в коде монада, а вы и не знали! вот разбирайтесь сами что с этим делать, но помните что это монада (при том что инстансы не всегда однозначны)

Даниил
13.10.2017
17:36:09
Аа ты привёл инстанс монады как довод в необходимости всей абстракции
ну так смотри, у нас в стандарте жс есть массивы и промисы, с которыми можно работать (и работают) как с функторами и монадами это я не говорю о всяких вещах, которые не входят в стандарт, но которыми пользуются, вроде мэйби это же логично, даже с точки зрения классического оопшника, что повторяющиеся подходы имеет смысл выделить в какой-то паттерн, даже не ради более обобщённого кода, а хотя бы чтобы, как я и сказал, не "переизобретать каждый раз колесо заново"

andretshurotshka?❄️кде
13.10.2017
19:11:27
ее монады



? animufag ?
13.10.2017
19:16:28
какая-то неправильная картинка. как будто производная в центре равна нулю

ну вообще норм тема сводить разговоры о монадах к монологу лейбница

andretshurotshka?❄️кде
13.10.2017
19:19:59
вообще если бы здесь потролить то норм отсылаться на лейбница про его монолог

? animufag ?
13.10.2017
19:20:17
хорош

Google
andretshurotshka?❄️кде
13.10.2017
19:34:35
?

Даниил
13.10.2017
19:46:01
не

andretshurotshka?❄️кде
13.10.2017
19:46:06
(

Даниил
13.10.2017
19:47:28
я особо до этого с фронтендом дела не имел, сейчас вот делою простенькое тестовое приложение на реакте и редаксе, но чё-то больно стало, хочу ADT и тайпклассы, вот и думаю шо можно часть на пурсе написать

но вот тогда проблемы с типизацией остального кода

andretshurotshka?❄️кде
13.10.2017
19:48:15
почему часть?)

Даниил
13.10.2017
20:13:59
ну хз, может если норм пойдёт то и не часть)

andretshurotshka?❄️кде
14.10.2017
09:16:30
Oh, I changed from ELM to pure jQuery because ELMS doesn't have support for mouse events and selection.

oleg
14.10.2017
09:34:11
Wtf

Разве?

andretshurotshka?❄️кде
14.10.2017
09:37:01
? хз

https://www.reddit.com/r/javascript/comments/75zyrm/this_onsite_coding_assignment_failed_20_frontend/

Name
14.10.2017
09:50:54
https://www.reddit.com/r/javascript/comments/75zyrm/this_onsite_coding_assignment_failed_20_frontend/
а вот были бы у них комбинаторы парсеров

Юрий
14.10.2017
11:44:01
Парни, можете подсказать, как вот это переписать в pointfree style (или хотя бы исключив document)? const setIsOwn = userId => document => R.set(R.lensProp('isOwn'), R.propEq('user', userId, document), document)

andretshurotshka?❄️кде
14.10.2017
11:46:47
ее поинтфри

@ZeroBias

Юрий
14.10.2017
11:48:46
В принципе, наверное, можно через zip пойти (сначала получить нужное значение isOwn, потом через линзу вставить в zip), но это выглядит некрасиво )

Kelin
14.10.2017
11:49:07
const setIsOwn = userId => chain(set(lensProp('isOwn')), propEq('user', userId))

Google
Kelin
14.10.2017
11:49:13
почти

andretshurotshka?❄️кде
14.10.2017
11:49:53
лол

как это

Kelin
14.10.2017
11:50:15
Вообще document и userId надо местами поменять

тогда проще будет

andretshurotshka?❄️кде
14.10.2017
11:52:56
а все догнал

Kelin
14.10.2017
11:53:13
Вариант для даунов const setIsOwn = converge(set(lensProp('isOwn')), [pipe(prop('userId'), propEq('user')), prop('document')]) setIsOwn({ userId, document })

Kelin
14.10.2017
11:55:17
Выносим пропы отдельно и как будто не поинтфри const userId = prop('userId') const document = prop('document') const isOwn = lensProp('isOwn') const setIsOwn = converge(set(isOwn), [ converge(propEq, [userId, document]), document ])

illiatshurotshka❄️
14.10.2017
11:55:21
setIsOwn = join . (set (lensProp "isOwn") .) . propEq "user"

лол

Kelin
14.10.2017
11:55:40
а бля, там propEq оба принимает

тогда еще веселее

andretshurotshka?❄️кде
14.10.2017
11:56:03
Kelin
14.10.2017
11:56:44
Когда очень хочется поинтфри

гагага

Страница 214 из 420