@haskellru

Страница 1510 из 1551
Александр
10.10.2018
11:38:12
Например, на каждый вызов операции кидать инфу в лог

Alexander
10.10.2018
11:38:25
ЭТО НАЗЫВАЕТСЯ ПОМЕНЯТЬ ИНТЕРПРЕТАТОР

/me бьется головой о стол

Александр
10.10.2018
11:38:54
Google
kana
10.10.2018
11:38:59
Например, на каждый вызов операции кидать инфу в лог
хм, но это же уже другой интерпретатор

Александр
10.10.2018
11:39:10
Хочу - в том же интерпретаторе делаю, если так задача решается без проблем

kana
10.10.2018
11:39:14
то есть старый стм-интерпретатор меняется новым, который еще логает что-то

Alexander
10.10.2018
11:39:14
как можно пытаться учить других и указывать им на книжки не понимая базовых вещей

Александр
10.10.2018
11:39:22
У вас какой-то формалистический подход

Alexander
10.10.2018
11:39:37
тем не менее мы тут все друг друга поняли

и вроде on the same page, как говорится

хотя вроде с разными background-ами и не в одном месте работаем

Александр
10.10.2018
11:40:21
то есть старый стм-интерпретатор меняется новым, который еще логает что-то
Зачем мне их много, если я не планирую первым больше никогда пользоваться?

Держать его мертвым грузом в проекте?

Alexander
10.10.2018
11:41:23
нет

kana
10.10.2018
11:41:30
Google
Александр
10.10.2018
11:41:39
kana
10.10.2018
11:41:49
все, я понял

проблема: есть либа stm, есть код, который ее использует, нужно не меняя этот код добавить логирование

Александр
10.10.2018
11:42:23
Продолжай :)

Да, такой кейс например

Или метрики снимать.

Или еще что.

kana
10.10.2018
11:42:56
решение @graninas: сделать интерфейс к либе, который будет будет реализовываться либой, и использовать ее

(очень хороший кейс для окамл-модулей имхо)

Александр
10.10.2018
11:43:20
Похоже на правду

kana
10.10.2018
11:43:47
другое решение: просто сделать свой модуль, который будет иметь тот же интерфейс, что stm, но дополнительно логировать

решения одинаковые в случае одного интерпретатора

но что не нравится Александр , что нет разделения и абстракции

Александр
10.10.2018
11:44:40
другое решение: просто сделать свой модуль, который будет иметь тот же интерфейс, что stm, но дополнительно логировать
Это если у тебя изначально функции нечистые в интерфейсе. Ну и задать этому второму модулю рантайм-инфу (куда логгировать) ты не сможешь, ведь в исходном интерфейсе эта рантайм-инфа отсутствует

Alexander
10.10.2018
11:45:53
на самом деле у Free ещё бонусы по композабельности эффектов

kana
10.10.2018
11:45:58
важный вопрос

Alexander
10.10.2018
11:46:03
но формально это новый интепретатор

который может делать больше

Google
Александр
10.10.2018
11:46:16
Alexander
10.10.2018
11:46:19
в этом случае нужно обобщение

kana
10.10.2018
11:46:28


Alexander
10.10.2018
11:46:41
телеграм меняет

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

Александр
10.10.2018
11:47:25
меня просто *бесит* когда люди интепретируют технологии как не то, чем они являются
Не то, как их автор задумывал? Проблема автора. Надо грамотнее дизайнить

Александр
10.10.2018
11:47:43
Не то, как некоторые заресечили? Ничья проблема. Подходы должны быть разные

Alexander
10.10.2018
11:48:12
при сравнении с другими технологиями навешивают на них дополнительные свойства, как уникальные для технологии

становится тяжело разговаривать

alexknvl
10.10.2018
11:49:39
@graninas хм, я тут подумал и понял, что не прав, можно в тайпкласс ФТ запихнуть рантайм значения, надо просто компилировать в Reader (условно)

Alexander
10.10.2018
11:50:04
ещё раз FT ~ Free(r)

alexknvl
10.10.2018
11:50:14
да

Alexander
10.10.2018
11:50:20
вот вообще 1 в 1

можно написать класс который при выполнении построит теги

Александр
10.10.2018
11:50:48
Alexander
10.10.2018
11:50:50
и можно написать интерпретатор который fold-ит теги

alexknvl
10.10.2018
11:51:06
если под Free понимать не только free monad, то да

Alexander
10.10.2018
11:51:23
а если только?

Denis
10.10.2018
11:51:24
ещё раз FT ~ Free(r)
ну как бы да, FT -> Free (через определение инстанса для FT) Free -> FT (через катаморфизм/анаморфизм для Free)

Google
Denis
10.10.2018
11:52:05
насколько я помню, то и фри интерпретаторы можно экстендить легко

Alexander
10.10.2018
11:52:06
у Free(r) и extensible-effects есть хорошие свойства по композабельности эффектов

про Free не знаю

alexknvl
10.10.2018
11:53:33
а если только?
data RuleAlg r = RuleAlg { and :: r -> r -> r or :: r -> r -> r not :: r -> r prefix :: String -> r }

Alexander
10.10.2018
11:53:35
вот тут уже можно говорить про полезность

Denis
10.10.2018
11:54:09
alexknvl
10.10.2018
11:54:20
это тоже FT

Denis
10.10.2018
11:54:33
ну разновидностей много

Alexander
10.10.2018
11:55:06
я не очень понял к чему это было, но class ~ record

Denis
10.10.2018
11:55:12
Datatypes a la carte это вообще объединенный подход

Alexander
10.10.2018
11:55:20
просто вопрос в наличии когерентности и явности передачи

alexknvl
10.10.2018
11:55:23
это по поводу Free

в данном случае тебе нужна начальная алгебра, т.е. "free" для RuleAlg будет data FRule = And FRule FRule | Or FRule FRule | Not FRule | Prefix String

не уверен, что термин free всё ещё корректно использовать в такой ситуации, но концептуально это и есть аналог Free для (FT-алгебры + Monad)

Free тебе даёт монаду for free. а тут мы ничего for free не получаем, кроме начального объекта, т.е. возможности сфолдить с помощью любой другой алгебры

правда и сам Free - тоже начальный объект в какой-то категории

alexknvl
10.10.2018
12:05:39
не надо, зачем?

Denis
10.10.2018
12:06:18
а что ты хочешь построить? Free FRule?

каинды не сойдутся

Google
alexknvl
10.10.2018
12:06:26
нет, не хочу

Denis
10.10.2018
12:06:35
а так это вообще просто adt

alexknvl
10.10.2018
12:06:38
да

это к тому, что FT != Free

Denis
10.10.2018
12:06:58
cфигали?

alexknvl
10.10.2018
12:07:03
т.к. FT значительно более обширное понятие

Denis
10.10.2018
12:07:04
изоморфизм построить можно

Yuriy
10.10.2018
12:07:04
каинды не сойдутся
каинд (сходиться)

Denis
10.10.2018
12:07:39
да все есть алгебры, просто в разных категориях

если уж все рассахарить досконально

f t -> t есть все структуры

моноиды, полугруппы

Dmitry
10.10.2018
12:08:25
чего-то сегодня бекендсикрета мало
<sarcasm>На работе сказали, что надо работать, а не в твиттере сидеть весь день ? </sarcasm>

Leonid
10.10.2018
12:08:27
mtl круче free

Denis
10.10.2018
12:08:37
каинд (сходиться)
это ты меня за грамматику подколол?)

mtl круче free
мтл как раз и есть final tagless

alexknvl
10.10.2018
12:08:56
изоморфизм построить можно
если подразумевается Free как free monad?

Leonid
10.10.2018
12:09:07
мтл как раз и есть final tagless
а мужики то не знают

Denis
10.10.2018
12:09:32
если подразумевается Free как free monad?
а как ты еще фри хочешь?

Страница 1510 из 1551