Alexander
pusher хвалил их GC
он нормальный при bounded и небольшой куче
Alexander
но средств сделать bounded нету
Alexander
если задача удачная
Андрей
это каких, форт?
ну хоть на нём
Andrei
Я на нем для КР580ВМ80А в школе писал всякое. Даже работало, что особенно приятно – намного быстрее BASIC. в 2012 был на презенташке Vitali Tsevan про factor, впечатлился
Vladislav
Есть какая нибудь файловая система, которая поддерживала бы так сказать виртуальные файлы? Я создавал бы файл с программой, которая на вход принимает другие файлы и выдает результат. Результат кэшируется и представляется read-only файлом. Если другие файлы меняются, то виртуальный файл перегенерится (при следующем чтении).
Anton
может @antontrunov знает
Ответ от автора книг(и): https://stackoverflow.com/a/45461908/2747511 Грейдер, похоже, что здесь: https://github.com/arthuraa/sf-grader
Dmitry
@int_index inotify?
Vladislav
@int_index inotify?
Похоже на то что нужно
Кабачок
pusher хвалил их GC
А Шипилёв не хвалил
Андрей
чем впечатлился то?
Андрей
я честно не понимаю зачем он
Kirill
А Шипилёв не хвалил
как-то аргументированно?
Andrei
чем впечатлился то?
тогда впечатлился. сейчас-то я тоже не вижу смысла в.
Кабачок
Да, но без подробностей. Сказал что все и сразу получить нельзя и ребята натюнили нужную им характеристику, и что ничего особо нового в этом ГЦ нету.
A64m
как-то аргументированно?
https://www.youtube.com/watch?v=q1h2g84EX1M
Leonid 🦇
у го гц заточен под гугл и сетевые сервисы просто
Leonid 🦇
а раз вам не подходит значит у вас не тот scale
A64m
это просто самый первый псевдоконкурентный сборщик изобретенный вот и вся заточка
A64m
они действительно делают ГЦ заточенный под сетевые сервисы, но не сделали еще
Anatolii
universum приятная :)
Alexander
все плохо
Alexander
universum терпим
Vladislav
Готовые прелюды от беса, ну то есть с universum понятно, это просто то, что в Serokell используется, а так у каждого проекта свои нужды
Vladislav
Берешь и делаешь свой Prelude per project
Vladislav
со всеми utils и т.д.
Vladislav
еще Хаскелю не хватает teaching prelude без тайпклассов
Leonid 🦇
Пост сноймана был подгадан по времени для эффекта "И тут появляюсь я, весь в белом". Судя по реддиту - сработало. Злые кабалисты оказались параноиками и истеричками
Алексей
Нафига такая нужна?
Чтобы сначала учить, а потом переучивать
Alexander
даваше
Кабачок
Нафига такая нужна?
Чтобы в нормальной fmap map-ом назвать
Зигохистоморфный
а есть ли такая?
кана
где map = fmap?
кана
universum же
Alexander
idris?
Кабачок
Alexander
==29619== Memcheck, a memory error detector ==29619== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. ==29619== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info ==29619== Command: ./88 ==29619== valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strlen valgrind: in an object with soname matching: ld-linux-x86-64.so.2 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-x86-64.so.2
Alexander
кто-нить такое видел?
Alexander
куда копать?
Alexander
а понял
Alexander
glibc с debug символами пересобрать
Alexander
блин лениво
Kirill
Я тут видел срачи про редакторы... так вот, кто-то же пользуется vscode? Поставил и я её себе на nixos. Включил плагин haskelly, тоже кто-то тут хвалил вроде бы. Только вот не работает. Пробую навести на символ курсор — мне пустой квадратик показывает. Go to definition не работает, при этом в консоль свою браузерную пишет: ERR Cannot read property 'slice' of null: TypeError: Cannot read property 'slice' of null at HaskellDefinitionProvider.extractRange (~/.vscode/extensions/UCL.haskelly-0.4.29/out/src/Providers/Definition/index.js:42:13)
Kirill
Хм... интересненько, авторы плагина про это не пишут. А причём тут nix-shell?
Kirill
У меня нет в проекте default.nix или чего-то такого.
Антон
Бля, и тут это
Антон
Извините
A64m
universum приятная :)
вы шутите, я надеюсь?
Vladislav
Хм, вот если у меня есть некий thunk a, как мне его изменить, то есть сделать мутабельное присваивание? Юз-кейс: допустим, у меня есть два семантически эквивалентных представления, и ни одна операция их не различает, но высчитать второе из них затрано; если я его вычислил, то я хочу, чтобы операции уже работали с ним, то есть перезаписать thunk в памяти.
Vladislav
Я могу, наверное, 1-элементный вектор таскать, а потом его анфризить, модифицировать, и фризить назад.
Vladislav
Можно проще?
Vladislav
(Без векторной обёртки)
Alexander
memoization?
Vladislav
Не уверен как именно? Вот имею две функции: f :: A -> B g :: A -> B и вызываю их f a <> g a В ходе вычисления f a может получиться, мы высчитаем более эффективное представление для a, и вызывать g уже хочется на нём. Конечно, я без проблем мог бы сделать так: let (a', b) = f a in b <> g a' но я хочу, чтобы оптимизация была прозрачной для юзеров этой API
Alexander
а может не получиться?
Alexander
вообще это не выглядит как хорошее и как то, что попадает под определение ограниченной мутабельности в ленивых языках
Vladislav
Ну в случае если не получится, то ситуация эквивалентная (можем модифицировать через id)
Vladislav
вообще это не выглядит как хорошее и как то, что попадает под определение ограниченной мутабельности в ленивых языках
Ну вообще говорят же что lazy/pure это искусство контролируемого mutable, операционная семанткиа с graph reduction на мутабельности основана, здесь мне просто нужно domain-aware mutation
Alexander
могут ли 2 разные функции оптимизировать по разному
Alexander
что они будут пытаться делать
Alexander
если у нас есть функция считающая структуру, то у нас исчезает referencial transparency
Alexander
может ли f (f a) обновить a сильнее?
Vladislav
я понимаю, я хочу unsafe-функцию
Vladislav
может
Vladislav
мне тупо хочется императивное присваивание
Alexander
ST :)
Vladislav
но это не прозрачно для юзеров API, если я верну STRef
Alexander
я не вижу разумного способа, который ещё и GC не увидит
Alexander
ты можешь вернуть MyVar a
Alexander
и у них будет f myVar <> g myVar
Vladislav
Смысл в том, что это присваивание оказывает ноль влияния на семантику, поэтому я хочу чтобы оно было прозрачно для юзера. Еще потенциальный вариант, что может быть я как-то смогу убедить компилятор через rewrite rules превратить f a <> g a в let (a', b) = f' a in b <> g a', но мне сложно придумать, чтобы это работало на любом коде
Vladislav
Может это плагином в компилятор делается как-то?