
Дмитрий
23.07.2017
18:02:15
sweet js

andretshurotshka?❄️кде
23.07.2017
18:03:43
баззвордыы

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

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

kana
23.07.2017
18:33:20
но ((->) 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
То есть не будет создаваться промежуточный список, он сразу будет прогоняться из аны в кату

Denis
23.07.2017
20:15:53
cata (alg1 <>< alg2 <>< ...)

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?

Denis
24.07.2017
18:26:25

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

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

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

Denis
24.07.2017
18:29:14

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

Denis
24.07.2017
18:30:23
ну а теперь логически
как ты можешь смотреть в глубь структуры без пути?