@frp_ru

Страница 116 из 420
Дмитрий
23.07.2017
18:02:15
sweet js

Я бы описал инстансы функторов на основе функций, но flow гораздо надёжнее выводит типы, если делать это на основе классов, поэтому у меня получается базис с классами
Причём вполне реально выполнять разные оптимизации выполнения, потому что в распоряжении есть весь контекст и бесконечный оптимизируемый call stack

Google
andretshurotshka?❄️кде
23.07.2017
18:03:56
а стоп

не, все равно не понял)

Denis
23.07.2017
18:05:32
dsl это когда ты на одном языке пишешь другой встроенный специализированный под определенную задачу

Дмитрий
23.07.2017
18:05:42
Да, например под фп

Что мешает реализовать бабель-плагин или макрос sweet js, делающий, например, полноценные функторы first class citizens?

Denis
23.07.2017
18:07:58
эмуляция это не есть то, что надо

Дмитрий
23.07.2017
18:08:04
Лол

Это не имеет значения, потому что является лишь оценочной характеристикой тру/не тру

andretshurotshka?❄️кде
23.07.2017
18:09:25
false as true

Denis
23.07.2017
18:10:17
стоготипизированноя ЛЯ с настоящим выводом типов

Дмитрий
23.07.2017
18:10:20
Многие языки высокого уровня основываются на хаскеле, по сути конвертируя абстракции более высокго уровня в сущности этого языка

Agda например

Denis
23.07.2017
18:12:46
ты не путай js и haskell

Google
Дмитрий
23.07.2017
18:12:48
Типы — это симулякр

Эмуляция симулякра — это non sense

Denis
23.07.2017
18:14:21
Типы — это симулякр
что это за слово такое?

Дмитрий
23.07.2017
18:14:37
Симуля́кр — «копия», не имеющая оригинала в реальности

Иными словами, если высокоуровневые абстракции вроде зависимых типов скрывают низкоуровневые детали реализации и позволяют забыть о них, то абсолютно не важно, что именно они скрывают — бабель или что либо ещё

Даниил
23.07.2017
18:17:17
Что мешает реализовать бабель-плагин или макрос sweet js, делающий, например, полноценные функторы first class citizens?
да на самом деле можно вообще на чистом JS всё это сделать в рантайме другой вопрос что это будет медленно, неудобно и несовместимо с остальной экосистемой JS

dsl это когда ты на одном языке пишешь другой встроенный специализированный под определенную задачу
не обязательно встроенный есть просто DSL (domain-specific language) - это просто какой-то язык заточенный под конкретную узкую задачу а вот когда такой язык внутри другого языка (через просто строки и интерполяцию, template strings, макросы, перегрузку операторов, кастомные операторы и т.д.) - это eDSL (embedded DSL)

Дмитрий
23.07.2017
18:22:28
да на самом деле можно вообще на чистом JS всё это сделать в рантайме другой вопрос что это будет медленно, неудобно и несовместимо с остальной экосистемой JS
Зависит от реализации. Диалог начался с моего описания классов-функторов, которые написаны на чистом жс и используют вывод типов flow, написанный на ocaml, получая преимущества нормальной статической типизации, оставаясь в рамках js

«Если тебе дадут линованную бумагу, пиши поперек» Если тебе говорят, что "это невозможно", то это значит что ни у кого просто ещё не получалось

?

kana
23.07.2017
18:33:20
https://www.cocoawithlove.com/blog/an-aside-about-flatmap-and-monads.html
с самого начала он сказал, что монада - контейнер

но ((->) a) - не контейнер

но с ней будут работать монадические законы

Denis
23.07.2017
18:34:03
ну будем честными - никто явно стрелку не юзает - есть Reader

kana
23.07.2017
18:34:05


я сначала попробовал сам, но оказалось, что это уже есть

Да, действительно, это то же самое, что и Reader

Denis
23.07.2017
18:58:53
только ридер наделен там своими штучками

особенно через всякие MonadReader

kana
23.07.2017
20:06:39
Правильно ли я понимаю, что в хаскеле композиция анаморфизма и катаморфизма будет работать так же по перформансу, что и гелиморфизм, из-за ленивости, а потому такого отдельного понятия как гелиморфизм в хаскеле не нужно? Ну то есть какой-нибудь код вычисления чисел Фибоначчи и так по сути гелиморфический, но отдельного оператора с 4 аргументами (моноид с нулем и конкатом, развертка и предикат) нам не нужен

Google
Сергей
23.07.2017
20:09:06
твою ж налево че за слова ((

illiatshurotshka❄️
23.07.2017
20:09:36
твою ж налево че за слова ((
уже второй день здесь такое

(

Denis
23.07.2017
20:09:45
kana
23.07.2017
20:11:20
Че за фьюжн

Denis
23.07.2017
20:11:36
вот тебе fib через древесную алгебру и коалгебру hs fibTree :: Integer -> Integer fibTree = hylo h g where g :: (Num r, Num a, Eq r) => r -> TreeF a r g 0 = LeafF 0 g 1 = LeafF 1 g n = NodeF (n - 1) (n - 2) h :: Num t => TreeF t t -> t h (LeafF n) = n h (NodeF u f) = u + f

hylo f g = cata f . ana g

можно сделать фьюжен

элиминируя ката/ана

hylo f g = f . fmap (hylo f g) . g

kana
23.07.2017
20:14:36
Так, я все это понимаю

kana
23.07.2017
20:14:40
Про то и был вопрос

Из-за ленивости композиция и будет вести себя как фьюжен

Denis
23.07.2017
20:15:04
а вот про что я вчера говорил про композицию алгебр

f <>< g = f . project . g

kana
23.07.2017
20:15:28
То есть не будет создаваться промежуточный список, он сразу будет прогоняться из аны в кату

kana
23.07.2017
20:18:19
Ну так я спрашиваю, есть ли в нем смысл, если хаскель сделает то же сам сам из обычной композиции?)

Google
Denis
23.07.2017
20:19:01
Ну так я спрашиваю, есть ли в нем смысл, если хаскель сделает то же сам сам из обычной композиции?)
че это ты так решил? если для него рулы не прописаны для фьюжинга то ничего и не будет

кстати

fix' :: (t -> t) -> t fix' = hylo (\(Cons f a) -> f a) (join Cons)

kana
23.07.2017
20:19:50
Ну так ленивость же. Ката требует элемент списка, вызывается функция из аны, потом снова ката требует элемент, снова вызывается функция аны

И так до тех пор, пока ана что-то возвращает. В итоге ката и ана работают параллельно, но синхронно, а не последовательно

Denis
23.07.2017
20:20:46
есть такая классная книга - жемчужены функциональных алгоритмов вроде от Берда вот там про хиломорфизм описано и про эту идею фьюжинга

Admin
ERROR: S client not available

Denis
23.07.2017
20:21:23
kana
23.07.2017
20:45:54
Нет, смотри, с композицией тоже будет один проход. hylo f g x = cata f . ana g $ x То есть a = ana g x b = cata f a b В первой строке в a ленивый список, то есть ana по сути ничего не сформировала еще. Потом мы делаем cata, он делает первый паттерн-мптчинг, где требует первый (и только) элемент, поэтому первый (и только первый) элемент начинает высчитываться через ana, применяет функцию к нему, а потом к этому же применяет cata от xs, где снова паттерн метчинг отделяет первый элемент, вызывая ana...

Denis
23.07.2017
20:46:08
та не один!

kana
23.07.2017
20:46:08
В итоге развертка и свертка идут параллельно

Denis
23.07.2017
20:46:17
нет

сначала ана

а потом ката

а вообще самый оптимизированный вариант это

hylo f g = h where h = f . fmap h . g

Ilya
24.07.2017
17:01:26
Чёт не могу понять, а у рамды нет функции которая убирает значение из массива по индексу?

Как without только вместо R.equals там индекс сравнивают.

А, есть, remove.

Уточка сама себя спросила.

Google
Vadim
24.07.2017
17:03:07
А dissoc так не работает?

Конечно сбивает с толку, что в рамде одни методы работают с любыми filterable объектами, а другие привередничают.

Denis
24.07.2017
18:00:18
ngrx без ng https://jsbin.com/cowebof/2/edit?js,console,output

думаю допиливать

Ilya
24.07.2017
18:03:33
Нет, диссок на объект вроде.

У меня с доками рамды большая проблема, глаза цепляются за какие-то названия, совершенно пропуская нужное.

remove я увидел с 4-го раза после того как спросил, причём я его уже даже открывал.

Denis
24.07.2017
18:05:58
даже можно эффектна на лету добавлять, удалять

Vadim
24.07.2017
18:25:09
Я правильно понимаю, что в partial.lenses можно обратиться к полю на любом (произвольном) уровне вложенности? В смысле, что нет необходимости прописывать полный путь.

А реально ли такое же сделать в ramda?

Vadim
24.07.2017
18:26:33
Там весь путь надо указать

Denis
24.07.2017
18:27:06
а в паршиал?

Vadim
24.07.2017
18:28:49
Я его пока не потыкал ) Но из доки понял что вроде можно

Vadim
24.07.2017
18:29:51
Без примеров ) Я просто не увидел ограничений, и подумал что тут народ с сей либой уже работал, и сходу ответит )

Denis
24.07.2017
18:30:23
ну а теперь логически

как ты можешь смотреть в глубь структуры без пути?

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