Kirill
сейчас вроде все крупные приложения на ndk и плюсах
Kirill
Так что наверно и хаскел можно прикрутить при желании
Kirill
Есть кстати ещё вот такая штука: http://eta-lang.org/
Ilya
о да, расскажите побольше про хаскель и андроид
Ilya
я как раз пилю одну программку, пока десктоп (интерфейс текстовый), но вообще ей на роду написано быть на телефоне
Donat
гугол кстати настоятельно нерекомендуют использовать ndk
Kirill
Во: https://brianmckenna.org/blog/eta_android
Ilya
но эта будет медленно:(
Kirill
там вроде надо в объектники и потом особым образом линковать
Kirill
или как-то так
Kirill
К слову eta себя пиарит, что в худшем случае у них скорость хаскеля, а в лучшем в 2 раза быстрее
Ilya
Kirill
Типа JIT и все дела
Ilya
да не, у меня NP-полная задача =)
Ilya
JIT наверное для другого
Ilya
тут просто алгоритм бы вылизать, да поближе к железу
Kirill
JIT просто оптимизирует код на основе статистики
Kirill
Т.е. если функцию дёргали только для списка с одним элементом, то он сотворит оптимизированную версию для этого дела
Kirill
Сэкономив пару тройку вызовов
Cheese
кстати, нехорошо проверять существование файла перед открытием. между этими двумя действиями файл может исчезнуть. надёжнее открывать и ловить исключение
Ilya
Cheese
Cheese
а, вы про Яву как раз
Cheese
надо же для этого JIT код сгенерить такой, который он поймёт. та же ленивость разве не создаёт лишнего оверхэда?
Kirill
Alexander
дешевые
Alexander
или надо цифры?
Dmitry
сразу хочется написать - и тьюринг-полные. но они и так тьюринг-полные
Dmitrii
А каким разумным способом можно бенчмаркать стоимость исключений? И делал ли это кто-нибудь? Цифры, конечно, интересно увидеть)
Kirill
Я просто с джавой сравниваю
Alexander
проверить разницу throwIO 17 и pure $ Left 17
Kirill
И там они ооочень дорогие
Alexander
только наверное надо внутри чего-то разумного их сделать
Alexander
и потом попробовать вложенные pure $ Left 17
Alexander
@saksmt с другой стороны doesFileExist использует внутри исключения
Alexander
там делается (not . isDirectory <$> getFileMetadata file) `catchIOError \_ -> pure False`
Alexander
что-то в таком духе
Alexander
doesFileExist :: FilePath -> IO Bool
doesFileExist path = do
(not <$> pathIsDirectory path)
`catchIOError` \ _ ->
return False
Alexander
поиск по стоимости исключений ничего не показывает
Alexander
видимо никто особо не парился, т.к. все остальные варианты не выглядят более дешевыми
Dmitry
о каком дорого/дешево можно говорить, если мы полезли к фс ?
Dmitry
разве что подъем из свопа
Cheese
Alexander
я думаю вопрос в целом, а не про данную ситуацию
Kirill
Да, в целом, просто в джавке вырабатывается привычка на эту тему, вот и интересно насколько она актуальна для хаскеля
Alexander
если ты в IO, то вполне нормально
Alexander
всякие ExceptT поверх IO очень часто выглядят странно
Dmitrii
о каком дорого/дешево можно говорить, если мы полезли к фс ?
Именно поэтому надо делать разумные бенчмарки. Например, в IO без ФС/OS(хотя это надо ещё подумать, как без OS)/интернета/etc. и отдельно со всякими функциями типа doesFileExist, чтобы понять, насколько большой процент от времени занимают исключений. Отдельным вопросом интересно про асинхронные исключения, потому что не очевидно, что стоимость будет одинаковая.
Alexander
асинхронные это другой мир
Alexander
на safe-point тред проверяет не "положили" ли в него исключение, и если да, то идёт в ветку с хендрлерами
Alexander
ЕМНИП
Evgenii
Dependent Types in Haskell: Theory and Practice https://arxiv.org/abs/1610.07978
Влод
по какому принципу ты выбирал группу где задать вопрос?
Leonid 🦇
Ну, это канал про хаскель, а значит тут сидят самые умные и крутые альфа-программисты.
Anonymous
@seogud Навыки? Математика? Логика?
Зигохистоморфный
шо за хуйня?
Anonymous
Поменьше изучения - это в питон. Но там с востребованностью плохо, в России, по крайней мере.
Востребованность есть в JS и PHP, но на них писать - себя не любить.
Готовых решений у меня нет.
Anonymous
Джава же какая-нибудь
Anonymous
В интерпрайз или андроид писать
Yurii
Так понял, что не принципиально именно программистом.
Игроделы жалуются, что хорошего (выше среднего) моделлера днём с огнём не сыщешь.
Leonid 🦇
Игроделы мало платят, и моделлер должен быть ещё и художником
Serj
Кем раньше то был, 36 лет до этого?
Anatolii
кана
ScopedTypeVariables
Зигохистоморфный
это тут при чем?
кана
Чтобы хаскель знал, что это один и тот же a, не?
Зигохистоморфный
нет
Зигохистоморфный
тут с x трабла
Viacheslav
Привет, а поясните мне за эксепшены. Смотрю тут на http-conduit, и она вроде как кидает эксепшн если запрос зафэйлился, а простого способа узнать какие нет. Это считается нормальным (то что в типе не видно что оно может кинуть)?
Viacheslav
Или может это просто плохая либа и надо что-то другое юзать
кана
Ну я перечитал ошибку несколько раз и она именно про это. A в cond и A в psi - разные типы, сделай их одним с помощью STV. Если это неверно, то хотя бы узнаю об этом точно
кана
нет
кана
тут с x трабла
Зигохистоморфный
тут еще partitionByCond :: forall a. Ord a => (a -> a -> Bool) -> [a] -> [[a]] forall нужен был
Anonymous
http://www.michaelburge.us/2017/08/25/writing-a-formally-verified-porn-browser-in-coq.html
Anonymous
STV + forall
Vasiliy
Привет, а поясните мне за эксепшены. Смотрю тут на http-conduit, и она вроде как кидает эксепшн если запрос зафэйлился, а простого способа узнать какие нет. Это считается нормальным (то что в типе не видно что оно может кинуть)?
про исключения много чего говорят, кто-то говорит никогда их не использовать, только ExceptT IO, кто-то, наоборот, говорит, что если есть IO, то ExceptT и прочее не нужно, есть разные реализации checked-исключений, но факт в том, что если есть IO, то исключение может прилететь какое угодно в любой момент времени, и с этим приходится жить