Апач
Зачем свободно работать с памятью если есть умные указатели + gc
Anonymous
в хаскеле есть умные указатели?
Апач
я хз что в хаскеле есть, я его не знаю
Alexander
ForeignPtr
Апач
вроде как в нём нет нужды ни в то ни в другом
Alexander
ну если умный указатель это указатель + refcounter
Alexander
нужно если FFI есть
Апач
Ну да, эт он.
Alexander
вообще для FFI в Haskell есть много интересных Pointer-ов
Alexander
от Addr# и Ptr, до StablePt, ForeignPtr, StaticPtr (не для FFI)
Апач
Но гц наверное нет
Anonymous
в смысле нет гц?
Апач
Где то писали для чистых функций он не нужен, там и так всё ясно
Anonymous
что-то новое
NC
Делал даже обёртку для плюсовых smart pointers на основе ForeignPtr с финализатором
Апач
Плюсы ещё та гадость
Апач
Трясинища
Alexander
глупости какие-то писали
Alexander
GC для нормального FP нужен
Alexander
для UFP хотя бы
A64m
даже для ферст ордер чистого языка нужен, потому что куча аллокаций из которых небольшое число объектов долгоживущие из-за персистентных структур всяких
A64m
если много аллокаций, и все быстро помирает не обязывают, можно аренами какими-нибудь обойтись, именно когда много аллокаций и небольшое число выживающих
Алексей
количество выживжих/погибших тоже не обязывает
Апач
там аргумент был из разряда что мы не можем сделать циклическую структуру не нарушая immutability, и по этому можно обйтись счётчиком ссылок
A64m
количество выживжих/погибших тоже не обязывает
ну а что вы тут еще из практически годного кроме гц придумаете?
Alexander
repeat x = x: repeat x
Alexander
пожалуйста ^
Alexander
циклическая структура
A64m
так можно сказать что и UFP не обязывает, просто никто ничего не придумал другого еще
Алексей
Апач
Мда, поменьше всякой фигни надо читать
Алексей
а вот в случае энергичного языка надо подумать
Alexander
сделать ленивость через \() -> a
Alexander
она не то, чтобы настоящая будет
Alexander
и тормозить, но это мелочи
A64m
я уже это спрашивал и мне тут показали, что циклические ссылки в случае ленивости будут
да и без ленивости бывает, к примеру такой вот код из окамлграфа let rec dummy_arc = { vert = Infinity; next = dummy_arc; inst = ref (Terminal dummy_arc); mate = -1 }
Alexander
но даже если и циклических нет, то что без GC то?
Апач
расшифруйте
Alexander
арены/регионы/рефкаунтеры?
Alexander
первые и вторые особо никто делать не умеет
Алексей
но даже если и циклических нет, то что без GC то?
нет циклических - можно счётчик ссылок забабахать
Апач
да
Alexander
но счетчик ссылок это хуже чем GC?
Евгений
Настоящую ленивость можно сварганить, если поиграться с call/cc
Alexander
в очень большом числе задач
Евгений
Счётчик ссылок это очень примитивный и тупой GC
Alexander
у вас сложность зависима от числа выделенных элементов
Alexander
а не от числа выживших
Alexander
это работает только для языка, в котором нужно мало выделять и мутировать
Alexander
причем не *можно*, а *нужно*
Алексей
хммм
Alexander
при этом без прыжков с аллокатором даже выделение дороже
Alexander
поэтому у нас появляются jemalloc, например.
Alexander
ещё вопрос какой у нас доступ из тредов
Ryner Reinhardt
Хаскель в основном для бэка же юзают?
Alexander
если у нас данные не thread-local (for some definition) то нужны синхронизации
Алексей
не, если всё таки говорить теоретически
Апач
Счётчик ссылок это очень примитивный и тупой GC
он не гц. Каждый уважающий гц гарантирует, что всё порождённое будет убито.
Alexander
да что теоритически, возьмите какой-нить prefix tree на раст и на haskell
Alexander
и удивитесь тому, что разница в скорости выполнения не та, которую вы ожидаете
Alexander
Хаскель в основном для бэка же юзают?
сейчас front/back очень сильно варьируются
Alexander
смотря откуда смотреть
Alexander
но код для браузера и UI на нём писать можно, но с натяжками
Ryner Reinhardt
Я просто пробовал ghcjs и оно комплится как UE4, т.е. по минуте ждать + это норма
Алексей
надо будет сварганить маленький чистый ФП язык без GC на счётчике ссылок (как обязательное условие) и посмотреть какой язык в итоге получится
Апач
Числодробилки это не ФП
Alexander
у ajhc вроде счетчик ссылок был
Alexander
?
Artyom
через полгодика опять прибегу
Alexander
есть забавный язык ats2
Alexander
https://en.wikipedia.org/wiki/ATS_%28programming_language%29
A64m
у ajhc вроде счетчик ссылок был
вывод регионов и гц для нулевого региона, как в млките
Alexander
> Garbage collection is not used unless explicitly stated with -D_ATS_GCATS. в ats2
Alexander
но я вот все его боюсь осиливать
A64m
(гц для нулевого региона как бы опциональный)