Апач
Зачем свободно работать с памятью если есть умные указатели + 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, и по этому можно обйтись счётчиком ссылок
Alexander
repeat x = x: repeat x
Alexander
пожалуйста ^
Alexander
циклическая структура
A64m
так можно сказать что и UFP не обязывает, просто никто ничего не придумал другого еще
Алексей
Апач
Мда, поменьше всякой фигни надо читать
Алексей
а вот в случае энергичного языка надо подумать
Alexander
сделать ленивость через \() -> a
Alexander
она не то, чтобы настоящая будет
Alexander
и тормозить, но это мелочи
Alexander
но даже если и циклических нет, то что без GC то?
Апач
расшифруйте
Alexander
арены/регионы/рефкаунтеры?
Alexander
первые и вторые особо никто делать не умеет
Апач
да
Alexander
но счетчик ссылок это хуже чем GC?
Евгений
Настоящую ленивость можно сварганить, если поиграться с call/cc
Alexander
в очень большом числе задач
Евгений
Счётчик ссылок это очень примитивный и тупой GC
Alexander
у вас сложность зависима от числа выделенных элементов
Алексей
Alexander
а не от числа выживших
Alexander
это работает только для языка, в котором нужно мало выделять и мутировать
Alexander
причем не *можно*, а *нужно*
Алексей
хммм
Alexander
при этом без прыжков с аллокатором даже выделение дороже
Alexander
поэтому у нас появляются jemalloc, например.
Alexander
ещё вопрос какой у нас доступ из тредов
Ryner Reinhardt
Хаскель в основном для бэка же юзают?
Alexander
если у нас данные не thread-local (for some definition) то нужны синхронизации
Алексей
не, если всё таки говорить теоретически
Евгений
Alexander
да что теоритически, возьмите какой-нить prefix tree на раст и на haskell
Alexander
и удивитесь тому, что разница в скорости выполнения не та, которую вы ожидаете
Alexander
смотря откуда смотреть
Ryner Reinhardt
Alexander
но код для браузера и UI на нём писать можно, но с натяжками
Ryner Reinhardt
Я просто пробовал ghcjs и оно комплится как UE4, т.е. по минуте ждать + это норма
Алексей
надо будет сварганить маленький чистый ФП язык без GC на счётчике ссылок (как обязательное условие)
и посмотреть какой язык в итоге получится
Апач
Числодробилки это не ФП
Alexander
у ajhc вроде счетчик ссылок был
Alexander
?
Artyom
через полгодика опять прибегу
Alexander
есть забавный язык ats2
Alexander
https://en.wikipedia.org/wiki/ATS_%28programming_language%29
Alexander
> Garbage collection is not used unless explicitly stated with -D_ATS_GCATS.
в ats2
Alexander
но я вот все его боюсь осиливать
Alexander
A64m
(гц для нулевого региона как бы опциональный)