Антон
Но в Rust нет HKT
A64m
ну, тем кому всего хватает можно позавидовать только, но не все такие
A64m
в общем, библиотека, которая проходит все до конца, сворачивает, мапает и фильтрует (правда сворачивание не ограничено скалярами, надо самому себя сдерживать) в хаскеле называется foldl (но она не воспринимается как библиотека вроде итераторов, для этого она слишком маломощная и применяется нишево, из-за фич вроде параллельной комбинируемости)
A64m
если уж деваться некуда и надо свернуть не в скаляр - там безопасное сворачивание будет в анбоксед/сторабл вектор сворачивателем vectorM (не путать с vector - этот особо опасный, течет только так)
Антон
A64m
там билдер вроде блейз-билдера, что в смысле малого мемори футпринта не самая хорошая идея, а vectorM прямо вектор модифицирует без особых хитростей.
A64m
т.е. это не что-то в принципе страшное, но не подпадает под требование каких-то гарантий нетекучести которые выше обсуждаются
Alexander
fold кстати гозалесовый или кметтовый?
Alexander
я второй так и не осилил
A64m
гонзалесовский
A64m
к кметтовскому нету "батареек" просто
A64m
ну т.е. что-то было отдельными пакетами, но в основном сгнило
A64m
одно время, кстати, гонзалесовский foldl был неправильно написан, плохо оптимизировался и тормозил, так что приходилось конвертировать foldlовые свораиватели в кметтовские и использовать нормально написанные быстрые инстансы из кметтовского folds
A64m
но сейчас foldl поправили
Алексей
А что там было не так?
Anton
parket
Чуть не профильно, но мож кто знает. Есть ли чатик по лиспам?
parket
Сел играться с scheme и то ли лыжи не едут, то ли я что-то не понял 😞
кана
mit-scheme или рэкет?
Aleksei (astynax)
Можно спросить в емаксочате - там куча липеров
parket
mit-scheme
parket
В общем, может кто-то тут подскажет
(define (fun fn . args) (fn . args))
Вот такой простой пример.
Illegal use of .'`
Darwin
Darwin
Отсюда: https://github.com/A-gambit/awesome-telegram-chats
Darwin
Сам не заходил туда
parket
Спасибо, спрошу.
Aleksei (astynax)
parket
C apply работает, конечно.
parket
Хочу понять что с точкой. :(
Aleksei (astynax)
Вангую проблемы распаковки мультиаргов
parket
Не работает в рантайме?
Aleksei (astynax)
ракет ругается на вторую точку
parket
Да, ругается. И я не могу понять почему. :(
Aleksei (astynax)
да, тоже везде видел, что пишут только про apply
кана
parket
Точка является вообще чем? Элементом синтаксиса, или шорткатом над cons? Я так понял, что элементом синтаксиса. Может она не умеет работать в рантайме.
parket
Aleksei (astynax)
кана
Ближе. Откуда?
https://stackoverflow.com/questions/12658406/how-do-i-handle-an-unspecified-number-of-parameters-in-scheme
Cheese
теперь это канал про racket?
Aleksei (astynax)
и про анимэ
Denis
@qnikst с твоими советами до 300мб ужалось, все равно жирнота
Leonid 🦇
смущает меня тип IO (Either Error ()), зато удобно в API. что делать?
A64m
А что там было не так?
да какая-то смешная ошибка из тех что кметт не делает, inlineable вместо inline в инстансах вроде. Это подробно разбиралось в хаскельгиттере
Антон
Leonid 🦇
Снойман всех убедил что ExceptT Error IO () не кошерно, и за такое будут порицать
Алексей
Так это же одно и то же.
А вот MonadWhatever m ⇒ ExceptT Error m () наш раввин одобряет
Leonid 🦇
Но я хочу там тупо IO
Алексей
Ну пусть будет IO раз удобно
Cheese
Cheese
он писал, что не надо ждать, что все ошибки будет только в Except
Leonid 🦇
ну незнаю, все пишут теперь "ой фуууу, ExceptT e IO a!!!! Лохи!"
Cheese
это не значит, что все ошибки теперь надо бросать исключениями
Denis
вот где мне не нравился никогда ExceptT e IO a, так это в серванте
Denis
сейчас хоть hoist сделали и можно не колхозить натуральные трансформации
Cheese
имеешь в виду, что MonadError m, MonadIO m было бы лучше?
Alexander
Только что, ребята, я сделал работающий STM на фри монадах.
Alexander
Зигохистоморфный
Alexander
Сурс здесь, но я его сейчас на отдельное репо вынесу:
https://github.com/graninas/Haskell-Algorithms/tree/master/Tests/STM/stm-free
Alexander
Теперь официально: https://github.com/graninas/stm-free
Alexander
Характеристики этого решения я, конечно, еще не знаю, и там есть неоптимальные вещи. Но это крайне простая реализация
Aleksei (astynax)
Кто знает, что за
other-modules:
Paths_bar
добавляет hpack?
Aleksei (astynax)
по факту это .stack-work/dist/x86_64-linux/Cabal-2.0.1.0/build/test/autogen/Paths_bar.hs
Aleksei (astynax)
Это вообще легально?
Aleksei (astynax)
Что-то я не замечал такого за hpack'ом ранее...
Aleksei (astynax)
Хмм. Проверил такое у меня и в других захпаченных проектах
Artyom
легально
Aleksei (astynax)
В одном проекте с tasty-golden подобным образом ещё и Golden в other-modules добавляется
Aleksei (astynax)
Ну я понял, что легально. А зачем?
Aleksei (astynax)
И если я не буду хпачить, то cabal сам неявно это всё подцепит?
Artyom
Ну я понял, что легально. А зачем?
это штука, которая даёт тебе обращаться к файлам, которые ты засунул в свой пакет
вроде бы поле data-files в кабале, но я не уверен
Artyom
модуль генерится кабалом в любом случае
Artyom
просто юзеры его забывают добавлять в other modules, когда используют, а потом у них ошибки линковки появляются
Artyom
так что hpack делает это за тебя на всякий случай