@frp_ru

Страница 169 из 420
Denis
23.09.2017
18:22:20
выходит что uppercase надо для B {a: String, b: String} всех?

illiatshurotshka❄️
23.09.2017
18:22:44
capitalise*

да

Denis
23.09.2017
18:23:12
ну тогда можно вроде через вертикальную композицию линз

Google
illiatshurotshka❄️
23.09.2017
18:23:55
что за вертикальная композиция

Дмитрий
23.09.2017
18:24:00
https://pursuit.purescript.org/packages/purescript-redox/7.0.1 Посмотри как тут сделано, там экшны-тайпы — это символы, так что подозреваю, что отдельные обработчики создавать не нужно (я не делаю этого даже в жс)

illiatshurotshka❄️
23.09.2017
18:24:11
в monocle не видно

kana
23.09.2017
18:24:59
оо, тянуть фри-монады всякие ради примитивных редьюсеров я не хочу)

Дмитрий
23.09.2017
18:27:57
оо, тянуть фри-монады всякие ради примитивных редьюсеров я не хочу)
Поэтому нужно юзать rollup, чтобы он весь код сворачивал до нуля)

Ну и я скорее не про фри монады а про сами экшны

andretshurotshka?❄️кде
23.09.2017
18:42:45


Denis
23.09.2017
18:47:21
{-# LANGUAGE DataKinds, FlexibleContexts, TemplateHaskell, DuplicateRecordFields #-} module Main where import Control.Lens import Control.Lens.TH import Data.Char (toUpper) import Control.Monad import Control.Applicative data B = B {_a:: String, _b:: String} deriving Show data A = A {_a:: B, _b:: B, _c:: B} deriving Show makeLenses ''A makeLensesFor [("_a", "a1"), ("_b", "b1")] ''B x = A (B "Test" "Test2") (B "Test" "Test2") (B "Test" "Test2") vc2 = liftA2(>=>) vc3 = liftA3(\x y z -> x >=> y >=> z) over (vc3 (a . vc2 a1 b1) (b . vc2 a1 b1) (c . vc2 a1 b1)) (map toUpper) x вот

vc2, vc3 это типа вертикальные композиции для линз

и результат A {_a = B {_a = "TEST", _b = "TEST2"}, _b = B {_a = "TEST", _b = "TEST2"}, _c = B {_a = "TEST", _b = "TEST2"}}

kana
23.09.2017
18:50:40


вот что получилось

Modules - комбайн редьюсеров (пока только одного)

Google
kana
23.09.2017
18:51:42
нужно думать, как избавиться от начального состояния

и диспатч классный)

illiatshurotshka❄️
23.09.2017
18:52:48
@xgrommx а ты видел https://hackage.haskell.org/package/category-extras-0.53.4/docs/Control-Morphism-Synchro.html ?

Denis
23.09.2017
18:53:20
это уже смесь биалгебр и триалгебр

andretshurotshka?❄️кде
23.09.2017
19:00:30
kana
23.09.2017
19:21:41


Dmitry
23.09.2017
19:32:10
шо это зачем это ?

kana
23.09.2017
19:32:35
так, попробовал интегрировать пурсу в редакс-проект. Какие подвнодные камни: 1. в пурсе все бинарные и выше функции транслируются во вложенные функции, что логично, но из-за этого нужно каждые редьюсеры оборачивать в uncurryN(2, reducer), uncurryN из рамды 2. нужно писать те же экшон-креаторы для жс-кода, потому что работать без них в жс с конструкторами пурсы сложно 3. редакс в редьюсеры посылает @@redux/INIT, обработать его из пурсы не получится, а без обработки там ошибка будет падать. Поэтому нужно было в тип Actions добавлять лишний Init и потом делать кейс reducer state _ = iniitalState, но даже это работать не будет, смотрите ниже 4. даже от того, что выше, пришлось отказаться, потому что редакс зачем-то требует, чтобы экшоны были объектами (много на себя берет), поэтому пришлось каждый экшон обарачивать в рекорд, а потом матчерить кейсом. 5. дефолтных значений в пурсе делать нельзя, а начальное значение указывать в кейсе _ тоже нельзя, потому что редакс будет посылать сюде все экшоны, даже не наши. Из-за этого нужно будет писать свой враппер над всеми редьюсерами на пурсе, комбайнить их тоже на пурсе, чтобы и INIT обработать, и type убрать, и экшоны в экшоны оборачивать (чтобы вложенные редьюсеры делать) Все это делает интеграцию пурсы с редаксом возможной, но код получается так себе, профитов от перевода редьюсеров на пурсу будет не так много, как хотелось бы
или вот норм пост - https://vk.com/feed?w=wall-135720595_700

Kelin
23.09.2017
19:32:57
аце что за красота сверху

а, пурс

kana
23.09.2017
19:34:55
меняем в редьюсере порядок на правый, получаем еще лучше reducer :: Action -> State -> State reducer Init = const 0 reducer Increment = (_ + 1) reducer Decrement = (_ - 1) reducer (Delta x) = (_ + x)

кстати, в пурсе проблему с каррированным - исправили имхо очень хорошо. Проблему с начальным стейтом тоже решил

Dmitry
23.09.2017
20:13:06
а как оно по перформансу в purescript ?

kana
23.09.2017
20:20:58
скорее всего плохо, так все по дефолту каррированное в js, хоть если использовал rollup-plugin, то нормально должно быть (да и вроде как v8 сам по себе эти места оптимизирует) Дефолтные массивы - массивы из js, поэтому работа с данными будет не быстрее, чем иммутабельно в js, но люди активно используют всякие линкед списки. Офигенный интероп, это не элмовские порты

Из книги по пурсе нужно абсолютно точно вырезать реакт и работу с конвасом. Че там забыли эти главы я хз. Возможно это и есть тот "example", но для таких вещей есть документация пакетов

Denis
24.09.2017
09:21:14
так про канвас на фри монадах?

kana
24.09.2017
09:23:48
Нет, во фримонадах там канваса нет, он там сам по себе главой отдельной

Denis
24.09.2017
09:26:49
я про этот пакет https://github.com/paf31/purescript-free-canvas

Google
kana
24.09.2017
09:36:42
https://github.com/slamdata/purescript-halogen/tree/master/docs

Denis
24.09.2017
09:38:00
https://github.com/slamdata/purescript-halogen/tree/master/docs
ну галоген это да) там всякие койонеды и прочее

andretshurotshka?❄️кде
24.09.2017
09:53:23
https://github.com/slamdata/purescript-halogen/tree/master/docs
у большинства пакетов нет доки

хорошо хоть где-то тесты есть

https://a-guide-to-the-purescript-numeric-hierarchy.readthedocs.io/en/latest/

Denis
24.09.2017
10:12:15
большинство пакетов пурсы это подлые попты с хаскелль

andretshurotshka?❄️кде
24.09.2017
10:12:53
подлые?)

доку почему тогда не портируют)

или там ее тоже нет?(

кто смог разобраться в новых типах рамды для тс?)

Denis
24.09.2017
10:24:54
чо?

andretshurotshka?❄️кде
24.09.2017
10:25:04
ну там хрень полная

https://github.com/types/npm-ramda/issues/196

ради типизации R.__ сделали костыль с генериками

Note that the new placeholder support requires explicitly describing the positions with placeholders using a bit-mask generic on a 0-param function call, e.g. R.adjust(R.__, 3)<"01">(), where 0 represents the placeholder position,1 represents an actual value (in this case 3).

andretshurotshka?❄️кде
24.09.2017
10:27:14
illiatshurotshka❄️
24.09.2017
10:27:26
сед

а че линзы в хаскеле нельзя без TH использовать? в скале как-то покрасивее

Google
kana
24.09.2017
10:37:34
Можно же, просто нужно много бойлерплейта писать на каждое поле



Denis
24.09.2017
10:42:19
а чем TH плох? хоть болерплейт писать не надо

у тебя что xiaomi?

kana
24.09.2017
10:43:18
Ну, note 4x

Denis
24.09.2017
10:43:43
просто узнал miui

illiatshurotshka❄️
24.09.2017
10:44:07
а стоп

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

Denis
24.09.2017
10:45:21
в скале красивее чем в haskell?)) особенно типы)

andretshurotshka?❄️кде
24.09.2017
10:45:32
[[[[[[

kana
24.09.2017
10:46:49
Мне это в скале не нравится, в хаскеле-подобных сразу видна аналогия на тайп-левел функции, Maybe : Type -> Type

Denis
24.09.2017
10:48:18
тем более если хочешь сам линзочки именовать то есть makeLensesFor

kana
24.09.2017
10:50:19
Вот бы завезли в хаскель нормальные рекорды, а то проблемы рекордов переносятся и на линзы, еще и префикс _ нужно делать

Denis
24.09.2017
10:51:09
не обязательно)

kana
24.09.2017
10:51:43
Ну это настраивается, но по стандарту нужно, чтобы стиль не отличался Дефолт - важный фактор, с которым нужно считаться

Denis
24.09.2017
10:54:05
data Boo = Boo {xx :: String, yy :: String} makeLensesFor [("xx", "_xx"), ("yy", "_yy")] ''Boo view _xx $ Boo { xx = "Test", yy = "Test2" }

illiatshurotshka❄️
24.09.2017
10:56:27
что значит ''?

Denis
24.09.2017
10:57:52
ну такой синтаксис у TH

Дмитрий
24.09.2017
12:28:28
"Ну прост"

Kelin
24.09.2017
12:29:22
Гомеопати

Google
Kelin
24.09.2017
12:29:43
как символично, у меня маман заболела и пьет оциллококцинум

illiatshurotshka❄️
24.09.2017
12:30:23
какую либу стоит использовать для оптики в js/flow?

Дмитрий
24.09.2017
12:34:50
Свою

Мне ничто не нравится

illiatshurotshka❄️
24.09.2017
12:39:06
а твоя публичная?

Kelin
24.09.2017
12:47:47
?

andretshurotshka?❄️кде
24.09.2017
12:54:41
illiatshurotshka❄️
24.09.2017
12:55:05
а где там оптика

andretshurotshka?❄️кде
24.09.2017
12:55:15
а

нигде)

Дмитрий
24.09.2017
12:56:19
Угу

а твоя публичная?
Я имею ввиду что нужно свою писать, потому что хорошего ничего нет

По крайней мере нормально типизированного

illiatshurotshka❄️
24.09.2017
12:57:06
я понял, но это подразумевает что у тебя что-то уже есть))

Дмитрий
24.09.2017
12:58:29
Для оптики нужны сначала Either, Maybe и Tuple, я их только недавно и сделал

Kelin
24.09.2017
15:41:07
Для оптики нужны сначала Either, Maybe и Tuple, я их только недавно и сделал
Блин, где можно об этом всем почитать с хорошими примерами, без тонны воды

illiatshurotshka❄️
24.09.2017
15:41:23
о adt?

andretshurotshka?❄️кде
24.09.2017
15:45:11
если в жс то статьи про fantasy land

illiatshurotshka❄️
24.09.2017
15:45:35
желательно изучить их в языке с нормальными ADT

а потом посмотреть на то как это переносят в js

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