
Kelin
27.09.2017
17:51:23

kana
27.09.2017
18:02:01
короч, поинфри отстой
toListOf :: Optic (->) (K (Endo [a])) s s a a -> (s -> [a])
toListOf lens = flip appEndo [] . getK . lens (K . Endo . (:))
была такая сложная ебанина
Я все упростил и снова стало поинтфри, но нормальное)
toListOf :: Optic (->) (K (Endo [a])) s s a a -> (s -> [a])
toListOf lens = unwrap . lens wrap
where
wrap :: a -> K (Endo [a]) a
wrap x = K (Endo (x:))
unwrap :: K (Endo [s]) a -> [s]
unwrap (K (Endo endo)) = endo []

Google

illiatshurotshka❄️
27.09.2017
18:04:38
у lens over tea какое-то слишком неподходящее название

kana
27.09.2017
18:05:00
я кстати начал читать и мне не понравилось чет

illiatshurotshka❄️
27.09.2017
18:05:10
что тебе понравилось?

kana
27.09.2017
18:05:54
я изобретал линзы по их типам и сразу правильные решения получились, а там куча шагов показывают ненужых. Потом для сложных вещей почитаю, но сейчас мне показалось там все очень странным

? animufag ?
27.09.2017
18:05:57

kana
27.09.2017
18:06:54
а так нет ничего интереснее ставить рандомные функции до тех пор, пока под тип не подойдет, а потом пытаться понять, почему оно работает) После второго раза замечаешь систему

? animufag ?
27.09.2017
18:07:28
так задания можно в SF делать
потом узнать что есть разные генераторы доказательств

Denis
27.09.2017
18:08:30

kana
27.09.2017
18:08:43
нет у меня твоего foldOf , говорю же

Denis
27.09.2017
18:08:44
foldrOf :: Optic (->) (K (Endo r)) s t a b -> (a -> r -> r) -> r -> s -> r
foldrOf l f z = flip appEndo z . foldMapOf l (Endo . f)

kana
27.09.2017
18:08:46
нужно его писать

Denis
27.09.2017
18:09:04
foldMapOf :: Optic (->) (K r) s t a b -> (a -> r) -> s -> r
foldMapOf l f = getK . l (K . f)

Google

kana
27.09.2017
18:09:05
а так решение wrap/unwrap мне больше нравится)

Denis
27.09.2017
18:09:30
просто foldrOf как раз четко как в Foldable

Gleb
27.09.2017
18:10:07
Так все таки композиция с двумя параметрами это валидное желание/осуществиемое?

Denis
27.09.2017
18:10:13
foldr :: (a -> b -> b) -> b -> t a -> b
foldr f z t = appEndo (foldMap (Endo #. f) t) z

kana
27.09.2017
18:10:18
o(o, o) - вот
const ooo = o(o)(o);
ooo(inc)(add)(2)(3) // 6

Denis
27.09.2017
18:10:49
вообще в рамде compose работает с любым количеством аргументов для 1 функции

andretshurotshka?❄️кде
27.09.2017
18:11:06
о(о, о) моя оборона

Gleb
27.09.2017
18:11:20
Композ то да, а вот дальше как
ну вызовет он первую функцию с многими аргументами
А как дальше ? из первой приходится кортеж уже возвращать

kana
27.09.2017
18:11:59
аа, так тебе нужен reader

Gleb
27.09.2017
18:12:22
Нукась

kana
27.09.2017
18:12:56
и composeK потом
ща, я посмотрю, как в рамде с ридером работать

Павел
27.09.2017
18:13:56
Мне тоже интересно

Denis
27.09.2017
18:14:40

kana
27.09.2017
18:14:42
но вообще вот
https://github.com/ramda/ramda-fantasy/blob/master/docs/Reader.md

andretshurotshka?❄️кде
27.09.2017
18:14:49

kana
27.09.2017
18:15:04
ну я ее по дефолту считаю частью рамды, потому что она в репле по дефолту ихнем

Google

Denis
27.09.2017
18:15:06
но ридер это просто функция

Gleb
27.09.2017
18:15:21
Что то должно вроде флетМепа быть в rx, только типа на функциях
Нахер я это сказал
Кароче да ридер тема
Спасибо!)

kana
27.09.2017
18:15:45
ну да, flatMap - это типа chain/bind монад. Ридер - тож монада

Denis
27.09.2017
18:17:34
ну вот (*10) >>= (*) >>= (+) $ 10 -- 1010

kana
27.09.2017
19:46:29
Окей, я догнал, что это за козвезды и choice.
Имея функцию a -> f b мы с помощью Choice.left' превращаем ее в Either a x -> Either (f b) x ( _Left = left' ), то есть функция теперь работет на ейзере только при Left. Но призма должна вернуть другое: Either a x -> f (Either b x).
То есть нужно преобразовать Either (f b) x в f (Either b x).
И вот как провернуть этот финт на профункторе я хз вообще хз. Да и без профунктора тоже хз, sequence какой даже для Right не подходит

Denis
27.09.2017
20:10:17
ну это вроде как Клейсли и КоКлейсли

? animufag ?
27.09.2017
20:10:22
у f есть какая-нибудь дополнительная информация или он просто * -> *

Denis
27.09.2017
20:10:52

kana
27.09.2017
20:11:01
_Left

kana
27.09.2017
20:11:18
какую я там ересь пытаюсь по типам сделать
_Left :: Prism (Either a x) (Either b x) a b
_Left p = rmap (either (Left . fmap Left) (pure . Right)) (left' p)

Denis
27.09.2017
20:12:03
а призму сделал?

kana
27.09.2017
20:12:14
ну дык это призма же и есть
_Left

Denis
27.09.2017
20:12:35
метод prism он будет просто в многих местах общий

kana
27.09.2017
20:13:04
ну пока я не сделал и тупо в лоб реализации _Left, чтобы обобщать)
ЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕ
СДЕЛАЛ

Google

kana
27.09.2017
20:15:00
_Left :: Prism (Either a x) (Either b x) a b
_Left p = rmap (either (fmap Left) (pure . Right)) (left' p)
пара часов ушло

Kelin
27.09.2017
20:16:05
сука
2 часа на баг убил
в рамде упорото ошибки вылетают

kana
27.09.2017
20:16:49
так, все тесты прошел, нужно теперь обобщить
_Left :: Prism (Either a x) (Either b x) a b
_Left = rmap (either (fmap Left) (pure . Right)) . left'
-- | A prism which focuses on the right branch of an Either
_Right :: Prism (Either x a) (Either x b) a b
_Right = rmap (either (pure . Left) (fmap Right)) . right'

Denis
27.09.2017
20:17:08

Maxim
27.09.2017
20:25:53

Kelin
27.09.2017
20:26:08
Лол

Admin
ERROR: S client not available

Kelin
27.09.2017
20:26:22
Я хочу флоу попробовать поковырять
Но так лень

Maxim
27.09.2017
20:27:19
И флоу тайпов мало

Kelin
27.09.2017
20:27:37
Ненавижу jsx
Соре

Maxim
27.09.2017
20:27:43
Надо самому руками многое пилить

Kelin
27.09.2017
20:27:56

Maxim
27.09.2017
20:27:57
Команда без джиэсикс не потащит)

Kelin
27.09.2017
20:28:10

Google

Kelin
27.09.2017
20:28:17
Jsx в Vue редкость

Maxim
27.09.2017
20:28:18
Вернее потащим, но тормознём еще на пару недель

kana
27.09.2017
20:30:02
нет, это для себя
ну, генератор призмы на стрелках сделал, осталось обобщить до профунктора
prism :: (small' -> large')
-> (large -> Either large' small)
-> Prism large large' small small'
prism build get pure' large =
case get large of
Left large' ->
pure large'
Right small ->
fmap build (pure' small)

Dmitry
27.09.2017
20:35:30
Jsx в Vue редкость
И как оно на вью ? Офф доки хорошие, а доки для компонентов все на китайском.

Kelin
27.09.2017
20:36:30
Все отлично
А по поводу компонентов - это какие такие?
Если про UI киты речь, то есть прекрасный vuetify

Denis
27.09.2017
20:37:35
https://www.youtube.com/watch?v=SknxggwRPzU&feature=push-u&attr_tag=tqMgRIGJfSJXiP19-6

Kelin
27.09.2017
20:37:58
Мне не нравится реакт за его упоротые jsx и css-in-js
И если второе хоть как-то можно оправдать "решением проблем с important итд", то первое это какой-то костыль
Ну я так думаю

kana
27.09.2017
20:38:27
тебе так кажется

Kelin
27.09.2017
20:38:38

Maxim
27.09.2017
20:38:45
Можно без джэсикс, а со стилями вообще 100500 способов работы

Kelin
27.09.2017
20:38:45
Это моё мнение

Maxim
27.09.2017
20:39:02
Я юзаю styled components

Kelin
27.09.2017
20:39:05

Maxim
27.09.2017
20:39:34
Hyperscript вполне читабелен и популярен
А вообще последнее время мало его использую.

kana
27.09.2017
20:39:53
начнем с того, что jsx - это просто сахар для обычной дсл для описания макетов внутри кода. Сахар опционален, поэтому не может быть плохим. Значит ты считаешь, что едсл для верстки на уровне кода - плохо. Но это позволяет нам работать с версткой как с первоклассным объектом в жс

illiatshurotshka❄️
27.09.2017
20:40:03

Kelin
27.09.2017
20:40:16
+ мне в Vue нравится, что половина бойлерплейт кода засахарена, в отличие от React