Vladislav
Например, если нетворинг и база данных используют логгинг, то когда мы подменяем словарик логгинга, нам надо обновить нетворкинг и БД тоже.
Vladislav
Если использовать эффекты mtl-style, то такого не будет.
Cheese
в чём разница между пакетами gtk и gtk3?
Andrei
в чём разница между пакетами gtk и gtk3?
в первом — биндинги для gtk2
Cheese
то есть старьё?
Andrei
да
Cheese
спасибо
Mi Shа
Привет! Подскажите, пожалуйста, как в ghci можно засовывать строковые литералы туда, где требуется ByteString? Couldn't match expected type `bytestring-0.10.8.2:Data.ByteString.Lazy.Internal.ByteString' with actual type `[Char]Написал в ghci {-# LANGUAGE OverloadedStrings #-}, но не помогло
Dmitry
Эммм, не знаток, но может http://hackage.haskell.org/package/bytestring-0.10.8.2/docs/Data-ByteString-Lazy-Char8.html#v:pack
Mi Shа
Эммм, не знаток, но может http://hackage.haskell.org/package/bytestring-0.10.8.2/docs/Data-ByteString-Lazy-Char8.html#v:pack
Couldn't match expected type `Data.ByteString.Lazy.Internal.ByteString' with actual type `ByteString'Hm..
Leonid 🦇
:set -XOverloadedStrings
Mi Shа
:set -XOverloadedStrings
Благодарю
Cheese
обратите внимание, что ByteString не адекватно преобразуется из String (адекватно только для ASCII)
Cheese
то есть пригодно только для каких-то технических вещей вроде ключевых слов
Cheese
а если засунуть человеческий текст, даже на английском языке, он может быть внезапно испорчен
Mi Shа
А почему тогда Data.Aeson использует его для декодирования из джсона?
Aleksei (astynax)
Энкодинг надо делать
Cheese
нет, aeson не использует ByteString.pack (я не смотрел в код, но было бы странно)
Cheese
сам по себе ByteString вполне адекватно хранит байты
Aleksei (astynax)
Data.ByteString.UTF8.fromString
Cheese
но это уже немного в сторону, я просто хотел сказать, что ("пример" :: ByteString) может сильно удивить
Aleksei (astynax)
Такой уж инстанс IsString
Artem
https://github.com/int-index/caps
а отрендеренная документация нигде не лежит случайно?
Vladislav
https://caps-0-dxkllnpysx.now.sh/
Vladislav
Случайно лежит.
kalloc
Вопрос по выбору трекера задач. Хотелось бы (не в порядке приоритета): - зависимости между задачами, - спринты, - API, - html5 и нормальный UI, - иметь kanban, - добавление подзадач, - возможность выстраивать workflow как в JIRA (блоксхема из статусов), - интеграция с draw.io, - быть легким (не как JIRA), - интеграции с github, Расскажите, кто что использует?
Aliester
Trello
Aliester
Хапстаф
kalloc
Trello не умеет многое
kalloc
спринты например
kalloc
workflow статусов
Aliester
Плагины есть
Chris
Я сам не пробовал, но как легковесную Джиру мне рекомендовали - https://yandex.ru/tracker/ Он не так давно вышел из внутреннего проекта Яндекса, но амбиции имеются.
Anonymous
А youtrack тяжёлый ?
Anonymous
На самом деле и Jira не сильно то тяжелая
Andrei
define «тяжёлый»?
Andrei
впрочем, я необъективен — я jetbrains за проставленные tab index готов простить почти всё
Nikita
Кто нибудь пользуетя nixOS тут
Alexander
да
Ignat
Офк, но есть и специальный чят
Ignat
@ru_nixos
Nikita
Мне просто интересен nix package manager но я на darwin
Nikita
macOS
Andrei
nix-darwin есть
Ignat
У меня там что-то странное происходит с обновлением каналов
Ignat
Но тут собственно nix-darwin ни при чём
Mi Shа
Mi Shа
Подскажите, а в чем оптимизация?
Cheese
ссылка на f не копируется на каждой итерации
Dmitry
второй мап можно инлайнить
Mi Shа
А первый почему нельзя инлайнить? Это связанно с тем, как рекурсия компилируется в цикл?
Cheese
второй мап можно инлайнить
первый тоже до некоторой глубины
Cheese
рекурсия не всегда компилируется в цикл
Cheese
рекурсия может компилироваться в jnz, и цикл может компилироваться в jnz
Ignat
а конпелятор сам недостаточно умный, чтобы общий префикс аргументов зафиксировать?
Mi Shа
jnz - это jump?
Cheese
достаточно глупый компилятор может сказать, что первый map рекурсивный, и даже не пытаться его инлайнить до какой-то там глубины
A64m
потому что не всегда приводит к улучшению кода.
Cheese
jnz - это jump?
ассебмлерная/машинная инструкция условного перехода
Mi Shа
if zero?
Ignat
if not zero*
A64m
теперь, правда, есть идея такая, делать это преобразование (оно называется STO) и если появились новые джойн пойнты, а старые не испортились - значит преобразование полезно
Cheese
zero или not zero — не суть. какой-то условный переход
Mi Shа
zero или not zero — не суть. какой-то условный переход
А разве не всякий цикл реализуется с помощью условного перехода?
Aliester
Aliester
почему феминистики пишут на JS?
Cheese
почему феминистики пишут на JS?
это валидно и на Хаскеле
Aliester
ну это с сайта по JS
Cheese
Mi Shа
Тепер стал понимать, рекурсия и циклы находятся на "одном уровне абстракции" над повторяющимися операциями.. А то обычно говорят, что рекурсия раскладывается в цикл..
Aliester
Aliester
представил сноймана в этом
Mi Shа
А в нефункциональных языках - рекурсия через цикл?)