@frp_ru

Страница 131 из 420
andretshurotshka?❄️кде
08.08.2017
14:33:14
https://github.com/ReactiveX/rxjs/blob/master/doc/writing-marble-tests.md

Denis
08.08.2017
19:16:59
привалило https://github.com/reaktor/purescript-workshop

https://reaktor.github.io/purescript-workshop/

? animufag ?
08.08.2017
19:21:12
хз. ну надеюсь кто-нибудь распишет впечатления/хайлайты/вопросы

Google
andretshurotshka?❄️кде
08.08.2017
20:01:28
@ZeroBias

? animufag ?
08.08.2017
20:24:06
https://reaktor.github.io/purescript-workshop/

Ну тип выглядит скучно, но могу ошибаться

Дмитрий
08.08.2017
21:06:49
Ну тип выглядит скучно, но могу ошибаться
Ну кстати язык огонь вообще

Мне со второй попытки вкатило прям нереально

Отличия от хаскеля либо в сторону сближения с жс — отличный интероп с ним и Records в виде жс объектов, либо вообще строго в лучшую сторону — Eff описывает суть побочных эффектов, в отличии от IO

Denis
08.08.2017
21:11:39
ну еффекты просто заменяют пирамидки из трансформеров монад

и у purescript их 2 основных типа Eff, Aff

andretshurotshka?❄️кде
08.08.2017
21:12:11
пурса не lazy

Denis
08.08.2017
21:12:41
пурса не lazy
там есть lazy пакет

и всякие cycle,repeat вроде работают

Дмитрий
08.08.2017
21:37:35
Ещё бы придумать как заставить его не тащить за собой весь prelude

Google
Дмитрий
08.08.2017
21:38:12
И можно будет писать всякие стойкие и надёжные либы для жс

Denis
08.08.2017
21:39:12
каким-нибудь treeshake

Дмитрий
08.08.2017
21:41:04
Да, в вебпаке шейкинг справляется с этим, проверяли) Но хотелось бы, чтобы в npm сразу был код с require из общего места

А то это как на втором npm, у каждой либы свой вагон нодмодулей

Denis
08.08.2017
21:43:40
ну или rollup

для библиотек очень ок

? animufag ?
08.08.2017
21:43:55
пурса не lazy
нуу не то что бы это полезная фича

Дмитрий
08.08.2017
21:45:32
А, точно, rollup частично решит проблему) Надо попробовать

? animufag ?
08.08.2017
21:56:25
Мне со второй попытки вкатило прям нереально
А вроде бы ты мне рассказывал в хаскель чате что он вообще трудно ложится на джс в отличие от например элма

А там тоже do на монадах? Или что-нибудь похитрее чтобы можно было эффекты комбинировать

Дмитрий
08.08.2017
21:59:41
Там в обе стороны интероп крутой)

Можно объявлять foreign function, и например вынести в соседний жс файл байтоёбство с массивами

Дмитрий
08.08.2017
22:02:46
А в обратную сторону — можно создавать как функции, так и объекты и даже традиционные классы жс прямо из пурсы

? animufag ?
08.08.2017
22:05:19
а что ты хочешь? ApplicativeDo?
Ну можно же вообще не из тк брать тайпклассы. Монады конечно достаточно, но трансформеры бесят.

? animufag ?
08.08.2017
22:06:06
Ну Eff - монада?

Дмитрий
08.08.2017
22:06:20
а это как еще? в пурсе нет классов)
Ну вот так) Я сам удивился, но генерируется именно такой код, прямо с new Попробуй объявить что-то через data

Google
Denis
08.08.2017
22:06:39
ну и понятно что newtype класс не создаст)

Дмитрий
08.08.2017
22:08:27
Ну так то newtype



Denis
08.08.2017
22:08:31
кстати вот как можно менять поведение для do notation

http://try.purescript.org/?gist=b440b705a32377f7f7ef7257be1115e5&session=def3e2f4-cc0a-15cd-c92a-3b7e99fbd738

Дмитрий
08.08.2017
22:08:53
Слева — результат компиляции кода справа

Denis
08.08.2017
22:09:18
ааа, это я знаю) я думал оно с ключевым словом class

вот как ApplicativeDo сделать в пурсе http://try.purescript.org/?gist=91c8c58419ec2683d46b8d83eb88614c&session=542269ea-d73a-4e2f-32e4-419cc477f3a2

или вот такое http://try.purescript.org/?gist=1f78ec6ed623c294f4de55ee11ad0065&session=9ccabc1d-9290-0343-5632-35c543945109

andretshurotshka?❄️кде
08.08.2017
22:16:26
вроде хотели впилить ес модули в purescript

Дмитрий
08.08.2017
22:16:37
Разве?

Дмитрий
08.08.2017
22:16:48
Там вроде в issues написали, что им не катит

andretshurotshka?❄️кде
08.08.2017
22:16:55
?

Denis
08.08.2017
22:16:59
лучше бы генераторы впилили для некоторых кейсов)

Дмитрий
08.08.2017
22:17:08
А для каких?

Вообще генераторы — это просто имплементация протокола Iterator, поэтому можно это сделать и на purs

andretshurotshka?❄️кде
08.08.2017
22:18:14
Там вроде в issues написали, что им не катит
https://github.com/purescript/purescript/issues/2574

andretshurotshka?❄️кде
08.08.2017
22:18:59
kjk

Google
Дмитрий
08.08.2017
22:19:47
или еще более общее - рекурсивные схемы
Не, я сейчас конкретно про жс кейс, генератор implements Iterator и Iterable, Iterable имеет .next() по спеке, а Iterator возвращает { value?: T, done: boolean }

Или наоборот, забыл кто из них кто

Denis
08.08.2017
22:20:05
ну это понятно

но все это все еще императивщина правда

Дмитрий
08.08.2017
22:20:42
Ну да, поэтому и интересно стало, зачем они тебе понадобились)

Denis
08.08.2017
22:23:29
ну так интересно же))) у пурсы как и у хаскелль денотационная семантика?

если да, то это же все потом переводится в язык у которого операционная семантика)

Admin
ERROR: S client not available

andretshurotshka?❄️кде
08.08.2017
22:51:21
я кидал уже)

Vadim
08.08.2017
23:23:36
Не уследил )

Вчера просмотрел цикл уроков от Professor Frisby. У него там почти все примеры построены на использовании semigroup. То-есть, вместо того что б просто использовать методы, типа add(a, b), или intersection(array1, array2) он использует Add(a).concat(Add(b)) или Intersection(array1).concat(Intersection(array2)). В чем преимущества такого подхода?

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

andretshurotshka?❄️кде
09.08.2017
18:56:53
у рамды сoncat диспатчится

Vadim
09.08.2017
19:01:38
Че-то я про плюсы так и не понял )

? animufag ?
09.08.2017
19:09:48
ну вообще сомнительная тема, да. по идее интересно пользоваться тайпклассом когда над ним определены какие-нибудь полезные операции. ну одна точно есть concat над непустым списком. но ради этого оборачивать в фиктивный объект и потом извлекать из него значение - кажется не очень удачной идеей.

Google
? animufag ?
09.08.2017
19:11:48
мб есть какие-нибудь функции с сигнатурой там SemiGroup a, AnotherTeorCat f => f a -> f a... тогда может есть смысл

? animufag ?
09.08.2017
19:12:59
NonEmpty вроде в хаскель это так называется
ну я только что в хугле смотрел, поэтому говорю непустой. так бы и не подумал

kana
09.08.2017
20:49:37
Именные инстансы - вот тема. Позволяют объявить множество реализаций семигруппы, скажем, без оборачивая в контейнер

Vadim
09.08.2017
20:50:45
Это самый простой способ определить в чистом жс тайпклассы
Все-равно не понял в чем семигруппы могут быть удобнее чем использовать функции, в стиле методов рамда.

Дмитрий
09.08.2017
20:52:07
Все-равно не понял в чем семигруппы могут быть удобнее чем использовать функции, в стиле методов рамда.
Не, тут дело не в удобстве, скорее наоборот. Есть концепция, которую он в этом курсе вероятно объясняет и есть жс, в котором это из коробки не очень очевидно в реализации, он выбрал такой метод

Это короче что-то типа имплементации интерфейсов, со всеми объектами тайпласса semigroup можно делать такие-то операции. Просто это решение в лоб, когда ты явно создаёшь инстансы чтобы быть уверенным, что твой объект работает должным образом

Тупо как-то объясняю, но если в кратце — у него это в иллюстративных целях)

Vadim
09.08.2017
20:56:45
)

Дмитрий
09.08.2017
21:00:30
Я просто только недавно прикидывал, как это можно организовать по нормальному, и пробовал сделать имплементацию в которой все тайпклассы содержатся в одном контейнере — там сложно сделать удобным образом, появляется ряд проблем)

andretshurotshka?❄️кде
09.08.2017
21:06:02
меняй прототипы)

Дмитрий
09.08.2017
21:16:20
Ну там несколько сложнее получается

Но относительно простой случай — Either — уже получился без противоречий, и даже тип выводит идеально

Denis
09.08.2017
21:20:53
функции высшего порядка это функции чтобы создавать функции)))

это дерьмо я тут услышал (вообще какое-то сомнительное видео) https://www.youtube.com/watch?v=BT7KnY6a_24&feature=em-subs_digest

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