@haskellru

Страница 1196 из 1551
Alexander
15.05.2018
09:24:24
c{man=_x} - и нету линз и сета

Sergey
15.05.2018
09:24:44
c uniplate насколько такое просто пишется? вроде highlevel комбинаторов нету
Первым делом похоже что подойдёт universeBi. Хотя, может ошибаюсь.

Alexander
15.05.2018
09:25:10
не похоже, оно же должно знать в каком оно поле

от этого поведение меняется

Google
Sergey
15.05.2018
09:26:00
По типу в любом месте структуры траверсит

Alexander
15.05.2018
09:26:02
а man там это линза, ок

он контекст же не хранит

тут поведелие зависит от положения в структуре

Ilya
15.05.2018
09:26:29
c{man=_x} - и нету линз и сета
это не будет работать. ‘man’ is not a (visible) constructor field name, конечно же

Sergey
15.05.2018
09:26:45
Тогда, да

Alexander
15.05.2018
09:26:51
мы меняем первое поле, то в генеремом значении мы должны менять первое поле

Pavel
15.05.2018
09:27:07
лучше бы желающие изучить хаскель вместо теорката изучали его имплементацию, теребили бы всякие игрушечные стг-интерпретаторы хоть понимали бы как ленивость работает
очень часто в контексте изучения хаскель слышу про вот какую-то особенную особенность ленивости в хаскеле. детали не копал особо, но лишь понимаю сам принцип, в традиционном изложении: мол до тех пор пока какой-то expression не нужен, он не будет вычислен. т.е. своего рода pull model. из совета постижения стг-интепретатора и ленивости, что конкретно стоит изучить ? какой конкретно аспект этой ленивости ? т.к. сейчас это кажется каким-то вроде как понятным, но раз часто так упоминают, то вероятно есть что-то мудреное там.

A64m
15.05.2018
09:34:33
kana
15.05.2018
09:40:38
ну вот duplicate через generic это то что нужно

без линз даже

Google
Alexander
15.05.2018
09:41:07
мне тут подсказали context в plated линзах

может поможет

Александр
15.05.2018
09:54:32
очень часто в контексте изучения хаскель слышу про вот какую-то особенную особенность ленивости в хаскеле. детали не копал особо, но лишь понимаю сам принцип, в традиционном изложении: мол до тех пор пока какой-то expression не нужен, он не будет вычислен. т.е. своего рода pull model. из совета постижения стг-интепретатора и ленивости, что конкретно стоит изучить ? какой конкретно аспект этой ленивости ? т.к. сейчас это кажется каким-то вроде как понятным, но раз часто так упоминают, то вероятно есть что-то мудреное там.
С ленивостью все и просто, и сложно одновременно. По началу можно ограничиться тем, что ленивость позволяет преобразовывать структуры без немедленного обхода их целиком. Напиши, например, функцию для создания графа: она принимает вершину и возвращает список смежных вершин. Одна такая функция будет полным описанием графа. Напиши теперь другую функцию, которая, используя первую, преобразует граф в список смежности. И вот пока ты работаешь с первыми элементами этого списка, он весь не вычисляется. Может, по задаче вообще не надо будет.

Alexander
15.05.2018
10:01:43
а если бы меня слушали уже бы все знали !!!

Pavel
15.05.2018
10:10:11
не, не шибко. спасибо

@A64m_qb0 @graninas про ленивость понял, спасибо

Alexander
15.05.2018
11:13:27
а если я хочу что-то типа Once для определенного типа операций, то мне нужно что-то похожее делать

у меня есть AST я могу его оптимизировать, при этом optimize . optimize = optimize

хочется не перепрогонять оптимизации на поддеревьях где оно уже сделано

делать Optimized !s s/ optimized x = Optimized x (optimize x) ?

A64m
15.05.2018
11:15:23
для сжатия каких-то матрешек с исключением повторных проверок где они убраны делают же что-то вроде Complete a | Partial (Partial a)

Alexander
15.05.2018
11:17:42
ну у меня тот же тип

а ли Partial a = Complete | Partial (Partial a) ?

A64m
15.05.2018
11:18:33
да

там параметра, конечно. два может быть

Google
A64m
15.05.2018
11:19:19
но не обязательно

kana
15.05.2018
11:19:48
а ли Partial a = Complete | Partial (Partial a) ?
а можно подробнее, что это дает? То есть выглядит так, будто у нас просто есть какое-то натуральное число

Alexander
15.05.2018
11:20:24
Compete a конечно же

A64m
15.05.2018
11:20:26
Complete a

Alexander
15.05.2018
11:23:06
мне второй конструктор не нравится

Alexander
15.05.2018
11:25:04
возможно много

причем в разных местах

причем в одной точне может сразу много уровней к AST добавиться, так что нельзя делать shallow функцию для оптимизации

(но проще всего забить и вызывать 1 раз)

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

kana
15.05.2018
11:29:08
причем в одной точне может сразу много уровней к AST добавиться, так что нельзя делать shallow функцию для оптимизации
Partial (Partial x) указывае на количество возможный оптимизаций, которые еще можно применить (тут 2)?

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

A64m
15.05.2018
11:30:52
а, забыл написать, что комитетчики приняли https://github.com/ghc-proposals/ghc-proposals/pull/112

kana
15.05.2018
11:39:26


я думал, что в каждую ноду, тогда нужно делать аст через Fix ExprF и параморфизмы начать писать (чтобы нижние ноды видеть)

Ilya
15.05.2018
11:46:38
да, выглядит как комонада какая-то
Похоже ты прав насчёт комонад, должны подойти. Правда, придется поменять типы, чтобы был осмысленный extract, но так даже лучше выходит.

Denis
15.05.2018
11:48:13
это уже говорит о duplicate -> Crowd (Crowd Int) так что да, тут комонада пойдет

твой new наверное это duplicate

Google
Denis
15.05.2018
11:48:38
из комонады

kana
15.05.2018
11:49:01
ну так-то не важно, обобщать до комонады или нет

там суть в том, что нужно будет генерики использовать

чтобы по всем полям пробегаться

Denis
15.05.2018
11:49:39
или тарелки всякие)

kana
15.05.2018
11:49:50
а плейты не на генериках?

Ilya
15.05.2018
11:50:07
или тарелки всякие)
Plated уже почитал, но как-то не зашло с первого раза

Опыта нет линзах:)

А комонады простые и понятные

kana
15.05.2018
11:51:16
ну типа я к тому, что сам тайпкласс и слово "комонада" ничего не решит тебе, это просто рамки, которые дадут тебе несколько фич, если ты в них влежешь

для генерации кода все равно нужны генерики, ведь ты не знаешь поля

Denis
15.05.2018
11:51:49
да думаю, если тебе надо поведения комонады, то мб лучше проанатировать свой адт косвободной?

Ilya
15.05.2018
11:53:36
ну так-то не важно, обобщать до комонады или нет
Да, просто у меня комонады хорошо на семантику задачи ложаться

Denis
15.05.2018
11:53:44
для генерации кода все равно нужны генерики, ведь ты не знаешь поля
тарелкам надо Data и Typable вроде, а это все дерайвится

Alexander
15.05.2018
12:03:24
это ещё хитрый map по нему

Denis
15.05.2018
12:03:46
map f . duplicate = extend

Alexander
15.05.2018
12:04:14
там не map, там mapAccumulate

ты когда делаешь duplicate ты вместо n дырок делаешь одну

Google
Alexander
15.05.2018
12:05:22
как бы data Three a b c duplicate' :: Three a b c -> (Three (Three x b c) (Three a x c) (Three a b x)

Denis
15.05.2018
12:05:50
это сценалий для Cofree, я же написал, что можно аннотировать Cofree

Alexander
15.05.2018
12:06:15
наркоманы, нет бы руками написать

Denis
15.05.2018
12:06:57
зачем? если есть абстракция над обобщением всех коданных?

Alexander
15.05.2018
12:08:05
быстрее бы вышло

осбенно обидно будет если изначально алгоритм не тот

т.е. обобщать круто, когда ты сравнимое время на это тратишь, или вечером балуешься

или если там много таких структурок

не обобщающихся

Evgeny
15.05.2018
12:29:43
Привет. Пытаюсь собрать проект ghcjs + miso с помощью stack. Возникает следующая проблема. Когда miso - единственная зависимость, указанная в dependencies в package.yaml, то всё собирается. Когда добавляю туда aeson - всё по-прежнему собирается. Но, когда в stack.yaml в extra-deps указываю конкретную версию aeson, получаю такую ошибку: The following package identifiers were not found in your indices: ghcjs-base-0.2.0.0 В чём тут может быть дело?

A64m
15.05.2018
12:34:28
наверное в том, что он аесон не той версии, от которой гхцжс зависит?

Imants
15.05.2018
12:47:18
К вопросу о ТК и Х: https://en.m.wikibooks.org/wiki/Haskell/Category_theory полюбопытствуйте

Denis
15.05.2018
12:57:15
ахах наша Ж? https://github.com/leftaroundabout/explicit-constraint-lens/blob/master/Lens/Explicit.hs#L65

Yuriy
15.05.2018
13:04:14
ух ты type AGetter ? ? ? ? = Ж.Optic Ж.GetterTrait ? ? ? ?

Denis
15.05.2018
13:05:00
а вообще мне не понятен этот модуль, зачем такие линзы?

Alister
15.05.2018
13:05:01
оптик ж сеттер, окаянный

Aleksey
15.05.2018
13:07:30
Жоптик какой-то

(простите)

Denis
15.05.2018
13:08:20
Ж.Optic

Ж.unto :D

Evgeny
15.05.2018
13:09:51
наверное в том, что он аесон не той версии, от которой гхцжс зависит?
а почему тогда в ошибке говорится про ghcjs-base, который не найден?

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