кана
Что есть #? В coerce там *, то есть между всеми лифтед, что логично
Cheese
# — род бескоробочных (примитивных?) типов
кана
А, анбоксед, понял
Cheese
λ> :k Int Int :: * λ> :k Int# Int# :: # только это старый GHC
Alexander
щас, если пойму как этот никсос заставить работать с буфферами - скопирую
Alexander
там все очень хитро похоу, может вы мне обясните
Cheese
в современном λ> :k Int Int :: * λ> :k Int# Int# :: TYPE 'GHC.Types.IntRep но смысл тот же должен быть
Alexander
все не то ~R# это специальная примитивная штука
Alexander
eqReprTyCon, representational equality
Alexander
блин как заставить мидл клик на тачпаде работать : (
Alexander
не скопировать ничерта
Alexander
в общем в compilerPrelude/TysPrim.hs есть табличка
Alexander
~R# это representational equality полиморфная применимая к значениям разных кайндов
Leonid 🦇
shift+insert
Alexander
да вот нифига, телеграм из другого буффера берёт
Alexander
с ним только выделение + middle click работает
Leonid 🦇
shift+insert это selection buffer же. А он поди на электроне
Alexander
в общем не дружит телеграм с консолью
Alexander
в общем у меня такое ощущение, что haddock стал честнее и всю внутреннюю кухню в coercible выдал
Alexander
а так ничего не поменялось
Кабачок
C-q / pkill telegram-desktop
Bohdan
Он вроде на qml (и течёт)
Даже не на QML, они все эти свистелки на голом Qt навелосипедили
Дима
Ага
Дима
В телеграме везде технологии каменного века
Дима
кроме языка сериализации с dependent types
Viacheslav
кроме языка сериализации с dependent types
там depentent они только по nat
Anonymous
по # и Type
Кабачок
https://toster.ru/q/463653
Зигохистоморфный
https://toster.ru/user/ProcenkoV :D
Alexander
@xgrommx не надо в том чатике ругань про haskell разводить, и тут достаточно, а там haskell полу-оффтоп
Зигохистоморфный
учитывая что идрис на нем написан)
Alexander
и агда, но все же
Alexander
вне контекста зав типов и их эмуляции лучше оставлять Haskell тут
Зигохистоморфный
ок
Зигохистоморфный
http://fvisser.nl/post/2013/aug/6/programming-haskell-doesnt-require-any-category-theory.html
Alexander
@antontrunov а у вас публикации доклады по Fine-grained concurrent separation logic. есть?
Anton
ответил в соседнем канале про завтипы 🙂
кана
type Traversal' a b = forall f . Applicative f => (b -> f b) -> (a -> f a) type Lens' a b = forall f . Functor f => (b -> f b) -> (a -> f a) Notice that the only difference between a Lens' and a Traversal' is the type class constraint. A Lens' has a Functor constraint and Traversal' has an Applicative constraint. This means that any Lens' is automatically also a valid Traversal' (since Functor is a superclass of Applicative). Объясните пожалуйста почему. Интуитивно наоборот, каждый траврсабл - линза, потом что Аппликатив - подкласс Функторов, но не каждая линза - валидный траверс, ведь не каждый функтор аппликативный
Зигохистоморфный
недавно был интересный вопрос по линзам, как за один раз обновить все вложенные рекорды родительского рекорда вот мой пример (я где-то читал про вертикальную композицию для линз) вот думаю адепты линз лучше это решат) data B = B {_a:: String, _b:: String} deriving Show data A = A {_a:: B, _b:: B, _c:: B} deriving Show makeLenses ''A makeLensesFor [("_a", "a1"), ("_b", "b1")] ''B x = A (B "Test" "Test2") (B "Test" "Test2") (B "Test" "Test2") vc2 = liftA2(>=>) vc3 = liftA3(\x y z -> x >=> y >=> z) over (vc3 (a . vc2 a1 b1) (b . vc2 a1 b1) (c . vc2 a1 b1)) (map toUpper) x -- думаю можно проще
Vasiliy
тут ограничение, которое накладывается на f, оно по сути пользователя ограничивает: если твой f только функтор, то тебе доступны только линзы, если оно ещё и аппликатив, то ты можешь использовать и линзы, и траверсалы
кана
Ну собственно я про это же, там же сказано, что линза автоматом и траверс, потому что функтор - суперкласс аппликатива
Vasiliy
по-умному, наверное, можно сказать что-то про то, что f стоит в контравариантной позиции, поэтому для подтипов f оно становится супертипом в самой линзе
кана
Не понимаю. Ну, понимаю, что первый f в отрицательной позиции, но не понимаю, как из этого следуют вещи про тайпклассы. Если бы Identity и Const не были бы аппликативами, а только функторами, то мы бы могли сделать линзу, но траверсом это бы не стало
кана
Тем не менее в посте выше сказано, что любая линза - автоматически траверс
Vasiliy
линзе от f нужно меньше, чем траверсалу
Anonymous
в скале просто написал функцию которая создаёт траверсал
Cheese
в положительной позиции — чем меньше требование, тем легче его удовлетворить в отрицательной позиции — чем больше требование, тем легче оно удовлетворяет другие требования
Зигохистоморфный
в скале просто написал функцию которая создаёт траверсал
походу тут тоже как-то траверсал можно сделать
Anonymous
в хаскеле с ТХ вообще лезть не хочется
Alexander
@xgrommx там же с plated решение было вроде простое
Cheese
в хаскеле с ТХ вообще лезть не хочется
не лезь, оставайся в своих грязных языках
Зигохистоморфный
@xgrommx там же с plated решение было вроде простое
пример? я пробовал Plate но не понял как проще
Anonymous
темплейт хаскаль
Зигохистоморфный
темплейт хаскаль
а чем плохо? убирает лишний бойлерплейт
кана
Окей, я еще очень тупой и все еще не понимаю, как каждый функтор станет аппликативом
Alexander
смотрм
Alexander
линза требует чтобы функция имела констрейнт Functor так?
Alexander
траверсабл требует, чтобы у функции был констрейнт Applicative, так?
Alexander
а не, неверно говорю
Alexander
type Traversal' a b = forall f . Applicative f => (b -> f b) -> (a -> f a)
Alexander
тут тип f задает caller?
adam
в хаскеле с ТХ вообще лезть не хочется
Лучше ещё какой-нибудь лифт*н/curry/фолд*н запилить под каждый аргумент делая асимметричную пирамидку
Alexander
он может задать только такой f, который Applicative
Alexander
как следствие этот же f автоматически будет и Functor
Alexander
т.е. как следствие будет подходить для любой линзы
Alexander
type Lens' a b = forall f . Functor f => (b -> f b) -> (a -> f a)
Alexander
я опять все перепутал похоже и с больной головой надо спать, а не в чяте сидеть
Зигохистоморфный
@qnikst как решить то с Plate?
Alexander
у клапауция спроси
Alexander
он это n раз писал
Alexander
я не линзогуру
кана
Нужно мне эти линзы самому написать, без этого не разобраться. Мысль летает, но не щелкает
Зигохистоморфный
Vasiliy
https://artyom.me/#lens-over-tea
это твоя что ли статья?
Alexander
@lightgreen (только он куда-то опять переименовался)