@haskellru

Страница 1431 из 1551
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
Да я писать собсно не собираюсь пока, только думаю много про это)

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

Гц’

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 будет жить. Поприветствуем!

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
Да, наверное

если писать язык, который только на чистых функция и ничего нигде не меняется, то проблем не вижу
Ну а при чем тут изменяемость, правда? Проблемы могут быть, если нам придется эмулировать ручной доступ к куче, но это как раз значит, что мы делаем язык без своего GC

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
типа этот язык можно в любой рантайм малой кровью встроить
Ты наверное можешь моделировать heap память используя массивы байтов. Как-бы, написать свой ассемблер. Такой принцип используется в asm.js чтобы C/C++ код перегнать в JavaScript

Тогда и сможешь реализовать свой гц

Google
Yuriy
02.09.2018
07:17:12
Вопрос только зачем эмулировать массив байтов для языка с ГЦ
в Яве это используется, чтобы обогнать GC по скорости

ГЦ — это «Гарбаге Цоллецтор»?

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
как чистить этот стейт будешь после часа работы проги?

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