Чтобы добавлять сообщения и комментарии, .

@qnikst:
qnikst

вот такие блины водятся в 10км от ядерного реактора и могильников и 500м от промзоны..

@qnikst:
qnikst

А что у нас в этих наших линуксах с HiDPI? Если у меня нету модного DE, то могу ли я как-нить в одном (двух-трех, в общем конечном числе) месте гуишным программам scaling factor выставить? Например, у хрома есть опция, а что делать с audacity, telegram, whatever else (не придумал, что ещё гуишное использую)

@qnikst:
qnikst

хочется написать что-то вроде:

class T a where type ReqRep a :: -> ; reqrep :: a -> ReqRep a x -> x

для того, чтобы можно было передавать запросы гадтами, которые типизированы возвращаемым результатом. Но при этом я теряю возможность сдеать простые классы, где запрос это Int а релзультат всегда Bool анпример.

Как сделать, чтобы и то и другое работало и запрос не надо бы было паковать в гадт?

@qnikst:
qnikst

покемоны смешная игра летом сплошная школота играла, а сейчас они в школе и за них играют родители

@qnikst:
qnikst

а можно ли написать:
```
data Q = Q (forall a . TChan (Request a, TMVar (Reply a)) }
Foo { foo :: Q }
runQ :: Foo -> Request a -> IO (Reply a)
runQ f = case foo f of
Q t = do v <- newEmptyTMVarIO
atomically $ writeTChan t (x,v)
atomically $ takeMVar v
```
и не свести GHC с ума? и не получить unsafeCoerce, Request a это GADT такой если что

@qnikst:
qnikst

так.. похоже в qubes-os не поддерживается nested virtualization печалька

@qnikst:
qnikst

хочу local data в haskell вот в посте выше у меня был тип A

data A (c :: * -> Constraint) = forall a . SafeCopy a => A (Dict (c a))

смысла в нём никакого, т.е. просто протаскиваем словарик для экзестенциального типа,
плюс ещё констреинт фиксируется, используется в самой функции, а так же у вызывающего эту функцию, например:

(\(SomeResourceDict (Dict :: Dict (Resource a))) -> A (Dict :: Dict (Resource a)))

Рядом мне нужно сделать data A3 (c :: -> -> * -> Constraint), который совсем похожий. В итоге было бы круто если бы такие бредовые типы можно было локализировать в функции. Кого позвать?

@qnikst:
qnikst

decodeAnyResource :: forall p t f . Typeable f
=> Proxy (p :: * -> Constraint)
-> Proxy t
-> (f -> A p)
-> (UUID -> String)
-> (forall a . p a => a -> t)
-> RemoteTable
-> ByteString
-> t


давно такой радости не писал, ну хоть чуть весело.

@qnikst:
qnikst

На андроидофоне начала сильно тормозить клавиатура, при переключении с английского на русский висит несколько секунд. Кого позвать чтобы починилось?

@qnikst:
qnikst

вот будет новый ноут, что туда ставить:
* nixos
* gentoo
* qubes-os
* какое ещё извращение (например gentoo+nix для бинарных юзеропакетов)

Gentoo существенно расширяемее и контролируемее nixos. В nixos хоть все эти derivations пишутся вроде и просто, но как-то желания учить их странный язык и писать совсем нет, в отличии от ебилдов, с которыми проще.
В общем с nixos всегда когда хочется чего-то странного я в итоге забивал и использовал дефолт, даже с latex, которому кастомизация точно нужна.
При этом с gentoo нужно обновляться часто и следить за всякими мелочами, т.к. иначе я умудряюсь закинуть систему в неконсистентное состояние, в котором все работает, но для обновления нужно 15 прыжков сделать. Сейчас частично порешал это использованием genoo+nix и всякий мусор собираю nix, а основу системы и полезные вещи и требующие кастомизации через gentoo.

При этом раз уж такие дела, то можно поиграться с чем-то новым, например, посмотреть qubes-os, тем более, что там, как я понимаю, usecase — templates VM распространен, поэтому можно собрать образ для работы.

Про требования:
* а никаких нет, мне фишек от дистра почти не надо
* большая часть работы все равно по mosh и VM
* возможность пускать nix очень желательно, т.к. разные проекты его используют
* желательна возможность использовать xmonad вместо менеджера окон
* DE не обязательна, но если можно прикрутить фишки и интеграции dm, через cli или простой интерфейс то было бы круто

Ну и да, мне на самом деле будет лень разбираться со всеми технологиями подробно, т.к. для работы мне достаточно tmux, mosh, vim (без конфигов), virtualbox, chrome браузера с плагинами для hangout, ghc (с возможностью разумно собирать любые версии в т.ч. HEAD) и без каких-либо кастомизаций вообще.

@qnikst:
qnikst

blog.tweag.io

линейные типы всем даром, пусть никто не уйдет обиженным

@qnikst:
qnikst

наркомания в тренде.. почему terminated хуже чем killed в документации?

@qnikst:
qnikst

где научиться писать композабельный и реюзабельный TH?
почему люди пишут функции на Name, а не TypeQ там где нужно тип передать?
и многие другие вопросы про TH где почитать?

@qnikst:
qnikst

а чего-там у нас хорошего в мире ноутбуков сейчас, из хотелось:

1. 16+Gb памяти, желательно расширяемого до 32
2. видяшка пофиг какая
3. разрешение от 1680x1050 (или близкого)
4. 14''+
5. если с тачскрином, то круто
6. если достаточно крепкий, чтобы неаккуратный человек типа меня не раздолбал его
7. вес не имеет никакого значения
8. батарею хотелось бы хорошую, но значение не имеет
9. из всяких бонусов можно TPM, и прочие интеловые штуки на поиграться, но тоже не очень важно.
10. на ноуте будет linux, так же железо желательно чтобы поддерживалось
11. ???
12. Profit

@qnikst:
qnikst

Использование ранк 2 тайпс для защиты ресурсов знакомо всем, но мне хочется идти дальше, мне нужно внутри rank2 уметь инвалидировать ранее созданные в этом ранк 2 ресурсы. Т.е.
```
x <- allocate
use x
foo
Тут x использовать уже нельзя
```
Один вариант это сделать foo CPS но это муторно и будет плохо работать в циклах, есть еще варианты? Indexed Monad взлетит?

@qnikst:
qnikst

как инстанс с MultiParamTypeClass преставляется в TH? мне лень минимальный пример делать..

@qnikst:
qnikst

Если программист на Haskell говорит reflection, generic и singleton, то в большинстве случаев его не понимают

@qnikst:
qnikst

Есть key value база данных. В ней среди прочего хранятся квадраты как (TopLeft_x, TopLeft_y, Width, Height)+всякие даные; в данный момент ключем является форма квадрата, т.е. сериализация этих самых (x,y,w,h); вопрос, есть ли идеи как это складывать таким образом, чтобы можно было эффективно выгружать интересные квадраты, т.е. те которые пересекаются с заданным?

Кстати хорошую структурку, в которую эти квадраты можно сложить в памяти (в haskell) тоже бы не помешало.

@qnikst:
qnikst

У меня такой вопрос, есть:

class Foo a where foo :: proxy a -> UUID

у меня есть (n::TH.Type), я могу сделать reifyInstances ''Foo n и получить instance Foo, вопрос, а могу ли я в том же TH получить значение этого UUID?

@qnikst:
qnikst

я сгенерировал лишние UUID, через uuidgen, как их положить обратно, а то вдруг они у меня закончатся?