for post messages and comments.

@ndtimofeev:

Это моя Jolla виновата или у мобильного жуйка настолько минималистичный дизайн, что листая ленту скопировать ссылку на отдельный пост не представляется возможным?

@ndtimofeev:

Из-за потребности в OMEMO пришлось перейти на gajim. Удивительное дело как гуйня на gtk может выглядеть так, что сомнений в том что она написана на питоне не остаётся.

@ndtimofeev:

— Я справился со своей паранойей. Я скормил слидивших за мной мышей коту.
— Это ты ушёл от неё, а не справился.

@ndtimofeev:

Почти смог настроить openvpn через plasma-nm. Не смог придумать как уговорить всю эту конструкцию НЕ прописывать сетевой адресс нового тоннеля маршрутом по умолчанию. Возможно в следующем году повезёт.

@ndtimofeev:

tab.snarc.org

@ndtimofeev:

В пакетном менеджере Cargo реализована команда "cargo check", при указании которой компилятором выполняются все совершаемые при сборке проверки кода, но пропускаются достаточно ресурсоёмкие стадии, связанные с генерацией исполняемых файлов. Для некоторых проектов "cargo check" может выполняться в несколько раз быстрее обычной сборки, что позволяет значительно сэкономить время разработчика при выполнении тестовых пересборок, обычно используемые в процессе разработки чтобы убедиться, что добавленный код компилируется; Хм… А ghc умеет в то чтобы натравить на исходник тайп-чекер и не генерить ничего?

@ndtimofeev:

Захожу в чайную комнату и вижу чашку с надписью Cofree. Присматриваюсь. Всё таки coffee.

@ndtimofeev:

Есть набор команд для устройства. Все команды по разному сериализуются и могут иметь свой собственный тип ответа. Требуется сформировать очередь из этих команд (вернее из пары команда — TMVar c типом ответа на команду) внутри remote-монады, затем переупаковать эту очередь и отослать в мир. Проблема в том, что я никак не придумаю как бы мне описать команды так чтобы можно было осуществлять более-менее нормальный паттерн-матчинг для очереди.

@ndtimofeev:

import Data.Proxy
import Data.Kind

type family Saturate (f :: k) (v :: a) :: Type where
    Saturate (f :: a -> Type) v = f v
    Saturate (f :: a -> k)    v = Saturate (f v) v

data Select f = Select (forall a. Saturate f a -> a)

sel :: Proxy f -> (forall a. Saturate f a -> a) -> Select f
sel _ = Select

data T a b c = T { x :: a, y :: b, z :: c }

Есть такой кусочек кода. Всё как всегда:
Select x — реджектится компилятором (без явной аннотации типа) потому что из Saturate f a нельзя вывести f.
sel x — работает, но таскать Proxy (или явную аппликацию типа) не хочется.
Есть шанс сделать красиво?

@ndtimofeev:

А зачем в мире победившего FTP нужны F-алгебры?

@ndtimofeev:

hackage.haskell.org — Смеяться после слова лопата^W^Wизучения того как работает pPrint.

@ndtimofeev:

В догонку к #2864255. Частично проблема решается явным экспортом полученных переменных. Теперь документация содержит те же символы что и загруженный модуль. Проблема в том, что я пытаюсь scrap my boilerplate и тут такой удар от классика.

@ndtimofeev:

Ну я так не играю. Я могу изобразить топ-левел биндинг с паттернматчингом, но haddock не умеет генерировать документацию^Wупоминания переменных созданных в этом паттерне, что сводит полезность вышеперечисленного на нет. Если в топ левеле объявить биндинг вида (var1, var2) = ('c', True), то в документации будет упомянут только var1.

@ndtimofeev:

ghc.haskell.org ghc.haskell.org — Мне кажется или что-то пошло не так?

@ndtimofeev:

А ни кого в первопрестольной нет чуть-чуть винилбромида?

@ndtimofeev:

github.com — это такой optparse-generic для питона?

@ndtimofeev:

Лет с пяти нахожу эту пиктограмму довольно забавной. Не знаю почему.

@ndtimofeev:

Больше всего мне в Generic'ах не хватает возможности доказать что у оложенного типа тоже есть Generic (или нет) и поветвиться по этому.

@ndtimofeev:

nponeccop.livejournal.com

@ndtimofeev:

λ> type family Null :: Constraint where Null = ()
λ> type AddShow a b = (Show b, a)
λ> :kind! FoldL AddShow Null [Int, Char]
FoldL AddShow Null [Int, Char] :: Constraint
= (Show Char, (Show Int, () :: Constraint))
λ>

Так и живём.