@frp_ru

Страница 201 из 420
kana
01.10.2017
23:58:31
ST - не функциональная вещь

Дмитрий
01.10.2017
23:58:40
Ну дык)

Ни разу кстати не возникло ситуации когда потребовалось бы что то типа такого after

Явное лучше неявного

Google
kana
01.10.2017
23:59:16
+

я короч не осилил этот printf

на идрисе такое делается как нефиг, тут чет сложно

Дмитрий
02.10.2017
00:01:01
А на идрисе каким путём реализуется?

kana
02.10.2017
00:01:09
нужно писать его самому, тогда вкурю, принцип простой

ну в идрисе мы в типе можем взять строку и сгенерить по ней тип

Дмитрий
02.10.2017
00:01:58
Аа, ништяк)

kana
02.10.2017
00:02:32
f : [Char] -> Type f [] = String f '%'::'d'::xs = Int -> f xs f '%'::'s'::xs = String -> f xs f _::xs = f xs

Дмитрий
02.10.2017
00:04:14
Мощно ?

kana
02.10.2017
00:26:35
ебана, познакомился с тардисом

Дмитрий
02.10.2017
00:26:47
??

Чо как оно?)

kana
02.10.2017
00:28:05
это сложно понять очень, мозги текут

Google
Дмитрий
02.10.2017
00:30:04
Достаточно понять ээто в будущем

И отправить разъяснение себе в прошлое

kana
02.10.2017
00:30:19
лол

Kelin
02.10.2017
00:41:51
ля

так ору чета

написал нечитаемую хуету, но выглядит прикольно

https://twitter.com/kelin2025/status/914643587920429056

прогнать это препаком и тупа каеф

Дмитрий
02.10.2017
00:43:24
Препак тут особо никак не поможет

Kelin
02.10.2017
00:43:36
почему

верхнюю часть соберет

думаю

не ну прикольно жи

point free in a nutshell

Дмитрий
02.10.2017
00:45:32
Аккуратнее, так можно fp fatigue заработать)

Kelin
02.10.2017
00:45:41
та не

ну здесь то норм все вроде)

читать просто снизу вверх надо

kana
02.10.2017
01:01:44
так

я написал ту херню из статьи про Тардис на жс

Google
kana
02.10.2017
01:02:29
типа получить массив и вернуть массив из m, где m - максимальный элемент массива, за один проход

то есть типа взял значение из будущего



arr_ - это типа вычисленное значение уже, не thunk

лучше конечно не делать так, а сделать какой враппер, который сам будет кэшировать результат

Kelin
02.10.2017
01:17:24
А зачем для new Nil еще и функция nil?

kana
02.10.2017
01:18:02
1. создавать вещи через new очень не удобно 2. nil отдает ленивое значение

Kelin
02.10.2017
01:18:49
Окей, спасибо

Дмитрий
02.10.2017
01:19:30
Омг, круто)) Выложи gist

Я в то же время начал на purescript пробовать, но там напрямую не портируется, я ещё не оч понимаю почему

kana
02.10.2017
01:21:41
https://gist.github.com/kana-sama/9224b4c8d7c4841e77a114e12c97c1d4 думаю, тут есть проблемы с тем, что распаковка производится чаще, чем нужно, работаю над эти

вроде вот - https://gist.github.com/kana-sama/e0dddbb9de77a3b1acd463cb9f747cd0

чуть исправил, заменил lazy на класс, чтобы лишнюю функцию не генерить

Единственное, что тут не сходится с хаскельной версией: const result = repMax( arr, lazy(() => result.exec().first.exec()) // <- this ); Потому что в js по очевидным причинам нельзя при инициализации переменной использовать себя) Если бы вдруг можно было бы, то выглядело бы это так: const result = repMax(arr, result.exec().first);

если поставить в max console.log, то можно увидеть, что он там вызывается ровно два раза (2, 3) и (3, 1)

Пост вот - http://kcsongor.github.io/time-travel-in-haskell-for-dummies/

kana
02.10.2017
01:49:08
я короче еще не до конца осознал, как мой код работает, попробую заватра

это какая-то ленивая магия

ну, вроде вся суть в том, что каждый элемент нового массива не расчитается до тех пор, пока мы все максы не посчитаем

Google
kana
02.10.2017
01:50:32
точнее, пока мы не посчитаем один макс, а его расчет требует расчета остальных максов

изи короче

то есть по факту задача реально решается за один проход - это проход максов, потом каждый элемент массива уже сетается по вычисленному максу

andretshurotshka?❄️кде
02.10.2017
02:03:48
?

Дмитрий
02.10.2017
02:04:24
Это не принципиально

andretshurotshka?❄️кде
02.10.2017
02:04:33
Как?)

kana
02.10.2017
02:04:59
Ну в данной задаче принципиально

Это решаемо на жс, потому что есть стейт, где я кеш положил

Дмитрий
02.10.2017
02:05:40
В хаскеле имплементация через fix point. В пурсе абсолютно так же есть fix, но я не уверен в тождественности этих структур и поэтому не могу быть увереным, что результат будет аналогичным

andretshurotshka?❄️кде
02.10.2017
02:22:41
https://gist.github.com/paf31/5c1279796d66fe04a177e34b0d674ac6

Дмитрий
02.10.2017
02:41:43


kana
02.10.2017
02:44:26
Не так все верно

Тип списка не зафикшен

Конс там по сути пара, как в лиспах

Дмитрий
02.10.2017
02:45:22
Ага Я сначала типизировал всё, а потом начал смотреть, что мне предлагается на выводе)

Флоу наводит меня на мысль, что в этой задаче все структуры ленивы по умолчанию

То есть нет lazy(() => Cons(....)), есть просто ленивый Cons

В котором значение можно вычислять при первом обращении к нему

И тут я начинаю понимать, к чему это всё приводит)) ??

Google
kana
02.10.2017
02:49:33
Делать там конс ленивым не было смысла, но я сделал, чтобы все функции работали одинобразно, то есть всегда получали лень, если я правильно тебя понял

Дмитрий
02.10.2017
02:50:16
Ага

В общем, тардис — ето mobx, внезапно

А точнее, что-то сильно напоминающее его механизм установления зависимостей между computed полями Значение "из будущего" означает, что мы уже имеем переменную, но её реальное значение ещё не посчитано

Всё переплетено ?

Denis
02.10.2017
02:59:59
монада тардис?

Дмитрий
02.10.2017
03:00:03
Да

Которая отправляет значения в будущее и в прошлое

Denis
02.10.2017
03:01:05
хрономорфизм)

Дмитрий
02.10.2017
03:01:48
Главное чтобы не дихрономорфизм

Denis
02.10.2017
03:02:30
kana
02.10.2017
03:04:28
Лол)

Denis
02.10.2017
03:17:55
chronomorphisms can 'look back' when consuming a type and 'jump forward' when generating one, via it's fold/unfold operations, respectively.

andretshurotshka?❄️кде
02.10.2017
04:36:13
Хм

Павел
02.10.2017
10:25:48


Alex
02.10.2017
10:28:26
а это purescript?

Павел
02.10.2017
10:28:39
Хм, я ни разу не писал на хаскеле, но знаю что такое футуры и корутины)

illiatshurotshka❄️
02.10.2017
10:28:55
что за шрифт?

Павел
02.10.2017
10:29:08
Без понятия, взято отсюда: http://lambdasoft.ru/posts/2016-03-05--tardis.html

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