
Dmitry
01.09.2018
10:46:13
Подскажите, а как продублировать функции из data, добавив к ним префиксы?
Вот у меня есть data Session = Session { user :: User, app :: App, node :: Node }, а мне надо автоматически сгенерировать ещё три функции:
test_user = user
test_app = app
test_node = node
Это через Template Haskell надо, или другие какие-то способы есть?

Abbath
01.09.2018
11:02:28
Линзы изобретаешь?

Dmitry
01.09.2018
11:02:40
Ну почти, да
Уже читаю makeLenses

Google

Dmitry
01.09.2018
11:02:55
Но не совсем
Есть скрытая в основном приложении структура, а мне надо написать тесты, которые всё-таки могут в состояние структуры заглянуть.
Вот и думаю, как лучше сделать, по минимуму переделывая основной код...
Т.е. мне нужно просто getter'ы со своими именами сделать, вот и всё.

A64m
01.09.2018
11:10:01
Internal модуль в котором ничего не скрыто

Dmitry
01.09.2018
11:10:59
Да, лучшее решение, но не знаю, согласится ли майнтейнер модуля.

A
01.09.2018
12:34:06
Народ, а возможно написать язык, само собой на хаскеле, который использует сборщик мусора самого хаскеля?
Хреново вопрос задал конечно

Maxim
01.09.2018
12:36:57
Можно транслировать в промежуточное представление хаскеля (ghc core или вообще c--) и это уже запускать
Но по возможностям все равно хаскель и получится

A
01.09.2018
12:37:34
Хм, я пока думал только про интерпретаторы
И залип на том, что в языке с переменными, да вообще с любыми изменяемыми абстракциями есть куча кейсов, когда гц хаскеля не знает, что пора что-то почистить
Наверно возможно только какой-то query language написать

Maxim
01.09.2018
12:40:25
Так может не надо писать язык с изменяемыми переменными, пытаясь засунуть в него Гц от хаскеля?)

Google

Maxim
01.09.2018
12:40:55
Можешь попробовать jvm байт код генерировать (хоть на хаскеле), будет их гц

A
01.09.2018
12:41:18
Да я писать собсно не собираюсь пока, только думаю много про это)
А мысль это пришла из-за того, что вроде вообще нет интерпретаторов, которые используют чужой гу
Гц’

Kirill
01.09.2018
12:45:58

A
01.09.2018
12:47:28
?

Kirill
01.09.2018
12:50:02
интерпретатор, который использует "чужой" (относительно кода, который ты передал) ГЦ (если я правильно тебя понял)

A
01.09.2018
12:52:12
Не понял ты меня
Вообще я мог уже задавать этот вопрос тут, не первый раз им задаюсь
Тогда другой вопрос, насколько сильно сборщики мусора завязаны на язык?

Kirill
01.09.2018
13:04:48

Kirill
01.09.2018
13:08:24
а могут быть очень, см. эрланг (хотя та под BEAM есть как минимум элексир)

Terminator
01.09.2018
13:43:57
@qweeze будет жить. Поприветствуем!

A64m
01.09.2018
14:02:58
вообще не понимаю в чем сложности

A
01.09.2018
16:25:13
сложность в реализации рефов, например
типа как написать допустим лисп на хацкеле, в котором будут рефы, но при реализации не использовать рефы самого хаскеля
тебе придётся делать какой-то слой похожий на память
которой, видимо, придётся самому чистить, то есть свой гц писать

Google

A
01.09.2018
16:27:16
рефы, мвары, вары, любая изменяемая фигня приводит в моей голове к этому
если писать язык, который только на чистых функция и ничего нигде не меняется, то проблем не вижу
но так даже в хаскеле не получается )

A64m
01.09.2018
16:33:43
а зачем рефы самого хаскеля не использовать?

A
01.09.2018
16:47:01
действительно
ну например затем, что не хочу

Ilya
01.09.2018
16:52:24

A64m
01.09.2018
16:54:18

Ilya
01.09.2018
16:57:57
Да, наверное

A
01.09.2018
17:03:35
а зачем рефы самого хаскеля не использовать?
во всех книжках про LC и реализации языка всё сводится к тому, что относительно богатый язык можно реализовав рекурсивные функции, а всё остальное строится на их основе, ну и из этого выходит красота и какая-то универсальность LC абстракций
типа этот язык можно в любой рантайм малой кровью встроить
вот я и не рассматриваю рефы рантайма

A64m
01.09.2018
17:06:00
ну вот "относительно богатый язык" можно будет, но для инплейс мутабельности надо будет инплейс мутабельность импользовать

Андрей
01.09.2018
21:42:55
писал лиспы на хаскеле, на джаве, на 1С, на питоне и на баяне ) везде использвал гц хоста ) знакомый писал на сишке - использовал ее гц (конечно писал свой)
но тут вопрос что считать гц. вот есть у меня связанный символ a, с ним связано значение списка в 100500 элементов (развернутого в памяти). и пока живет это окружение и это имя живет в нем - эти 100500 живут в куче. если окружение не живет (вышли из лямбды) или я перебиндил a на 0 - 100500 элементов почистил гц хоста. можно самому писать свой слой гц для разбиндивания своих же имен конечно

Terminator
02.09.2018
06:24:47
@alexknvl будет жить. Поприветствуем!
@Nivroc будет жить. Поприветствуем!

The mirror
02.09.2018
07:00:47
Тогда и сможешь реализовать свой гц

Google

Ilya
02.09.2018
07:07:35
Для С++ понятно зачем, он без ГЦ

Yuriy
02.09.2018
07:17:12
ГЦ — это «Гарбаге Цоллецтор»?

Imants
02.09.2018
07:37:08
Мусорка

Dmitry
02.09.2018
07:46:59

A
02.09.2018
07:55:15
хочется же идеального мира
типа в котором я могу написать парсер, определить пару функций нормализации термов и всё готово )
а ГЦ сам собой появился)
Sborshik Musora то есть

alexknvl
02.09.2018
08:01:49
так, а почему нельзя использовать сборщик мусора самого хаскеля?
data Data = Nil | Cons Data Data | Atom String

A
02.09.2018
08:02:40
ну вот что-то мне подсказывало, что его получится использовать только в простейших случаях

alexknvl
02.09.2018
08:02:54
ну неправильно подсказывает
значит :)
для лиспа хватит

A
02.09.2018
08:03:25
ну читай выше, как ты рефы и мвары сделаешь без своей управляемой памяти
не используя рефы и мвары хаскеля

alexknvl
02.09.2018
08:03:53
а почему не используя?

Google

A
02.09.2018
08:04:17
? было уже

alexknvl
02.09.2018
08:04:52
ну ок, легко
State (Map Int Data)
рефы представляем интами

Alexander
02.09.2018
08:05:46
при всем уважении к рефам и mvarам хаскеля, в большинстве языков бывают циклические ссылки
проблема отчасти решается слабыми ссылками и прочими радостями, но память в той же джаве течет до сих пор
не так энергично как в C++ конечно, но все же

alexknvl
02.09.2018
08:06:47
и в хаскеле бывают циклические ссылки

A
02.09.2018
08:06:55

alexknvl
02.09.2018
08:06:56
a = 1 : a

A
02.09.2018
08:07:11
как чистить этот стейт будешь после часа работы проги?