Dmitry
Похоже, нужен ещё и ночной спамочист-хаскеллист
andrei
Можно и фронтендера взять
Dmitry
Этак они хорошему научится, некому будет сайты делать
andrei
Будут делать на хаскелле
Dmitry
Нужно просто пингануть одного из модераторов
Alexander
будете делать свою прелюдию - уберите toInteger из Integral. Что он вообще там делает?
Alexander
точнее убрать надо как раз divMod
Alexander
Какой нежный, однако, язык. Без прелюдий никак...
Aliester
в расте так же
Alexander
Раст вообще молодец. Наш парень.
Alexander
ну вот обидно, что нет класса, который может в divMod, но не может в toInteger
Aleksei (astynax)
В какой-нибудь Numeric Prelude есть классы и про это (но это не точно)
andrei
Надо кольца
Alexander
они там есть
Alexander
https://hackage.haskell.org/package/numeric-prelude-0.4.3/docs/Algebra-Ring.html
Alexander
и т.д.
Alexander
Замена Free на "No Remorse" на простом сценарии с инкрементом TVar дала ухудшение с 500ns до 600ns. Нужны, вероятно, более длинные монадические цепочки, чтобы Free показал квадратичное падение, а "No Remorse" оставался линеен. Однако, если ваши STM транзакции очень длинные (длиннее, скажем, 50 строчек), значит, вы что-то не так делаете.
Alexander
длина транзакций в количестве строк..
Alexander
Ну а как их посчитать? Каждый байнд учитывать? Оценка в строчках более удобная
Alexander
И вот, кстати, мысль. Если Free в ленивом стиле байндит одну цепочку к другой, пробегая по всем элементам первой, и отсюда лезет квадрат, то что мешает вычислись результат до какой-нибудь NF (поправьте, если ошибаюсь), и получить просто линейную цепочку?
Alexander
Или я чего-то не понимаю?
Alexander
ну для free реализации это разумно, а для обычной скорее число STM операций и длина беклога
Alexander
Что такое "беклог"?
Alexander
опс, transaction log
Alexander
список действий, которые перепроверяются при коммите
Alexander
в общем-то список read-ов разных тварей (и.к. повторный read уже локальный)
Зигохистоморфный
https://github.com/jwiegley/ghc-dynamic-example
Dmitry
Добрый день! Можете подсказать как в vscode рефакторинг (HaRe?) подключить? После установки hie рефакторинга нет (может не туда смотрю?).
Anatolii
Aliester
реквестирую статическую кложу
Alexander
лень
Maxim
Там кстати фейсбук выкатил свой тайпчекер для питона
https://pyre-check.org
А вы в кложу не можете
кана
join .(N+1) liftAN - вроде как довольно частая вещь. Никто нигде не видел готового общепринятого хелпера/нейминга?
кана
liftMN уже занят, можно взять liftAMN
Maxim
Народ, а hie обязательно должен быть собран тем же компилятором, что и проект?
Если я соберу его системным гхц, а проект собираю стеком со своим компилером, будет работать? Версии обоих 8.0.2
Alexander
Обязательно :(
Зигохистоморфный
мб можно под проект локально собирать
Ilya
как проапдейтить поле структуры по "вынимающей функции"?
допустим, есть такой тип
data Crowd a = Crowd {first :: a, second :: a, third :: a} deriving Functor
type Man = forall a. Crowd a -> a
хочу написать такую функцию, но не знаю как
forget :: Bounded a => Man -> Crowd a -> [Crowd a]
forget = undefined
-- forget first (Crowd _ s t) = [(Crowd f s t) | f <- [minBound..maxBound]]
в комментарии к forget пример, как она должна работать. Но я не могу заматчить first.
Если type Man выбран неудачно, то какой тут нужен на самом деле?
Maxim
Я до сих пор не понимаю до конца где что и зачем хранит стек
Maxim
Хоть на никс переходи
Maxim
Кстати, никс может собирать мне только хаскель, а всякие зависимости брать из системы?
Alexander
в .stack-work локальное в ,~/.stack глобальное
Ilya
кана
линзы же
Ilya
линзы же
вместо Crowd может быть более сложный тип, например список или ещё хз что. Всё равно линзы?
кана
да
Ilya
спасибо, пошёл читать
Dmitry
Dmitry
Добавил Enum a, все прошло
Alexander
Maxim
Инфраструктура на высоте
Dmitry
undefined закомментировал. Следующую сточку раскомментировал
Ilya
кана
такая функция не заработает, ну что вы
кана
какой блин матчинг по функции
кана
там first будет не тот геттер first, он любой геттер сматчит очевидно
Dmitry
это правда :-)
Ilya
какой блин матчинг по функции
ну я настолько не верил, что это сработает, что даже и пробовать не стал. но раз человек пишет, то сейчас попробую
Dmitry
я просто думал, что проблема в компиляции
Dmitry
lens или даже generic-lens
кана
кана
кана
@Masteroid
Ilya
оно на темплейтах работает, да?
Ilya
за код спасибо, пошёл курить доки
кана
можно и без TH
кана
кана
а можно через generic-lens через generic
кана
@Masteroid - есть и моя маленькая простая реализация (которой бесконечно далеко до generic-lens, но идея понятна)
кана
Пример использования символов в хаскеле - недолинзы:
https://gist.github.com/kana-sama/733e3596fe2d88a58e1dc3f73868eb8b
(Есть и пакет с чем-то подобным - generic-lens, там все инстансы генерируются)
вот с генерацией через generic: https://gist.github.com/kana-sama/b7f8a2a405061260a2ee7beafbd59e32
Ilya
кана
lens - старые кметовские линзы для всего подряд + генерация через template haskell
в generic-lens линзы уже модные профункторные, генерация через Generic
трогать новичку generic-lens имхо не нужно, как показывает время компиляции, это еще игрушка
могу ошибаться
кана
а нет, в generic не все профункторные
кана
но либы скорее всего совместимы между собой, generic-lens просто поставляет код для generic-генерации линз, которые можно использовать уже через функции пакета lens
A64m