кана
он же Compose
кана
t = getCompose . fmap show . Compose $ f
кана
Compose это как раз твой Fun, только еще стрелка обобщена до функтора
Ilya
значит надо transformers поставить, спасибо
кана
Compose в base есть
кана
ридер-инстанс стрелки тоже в base
IC
а потом они ругаются на "монады это пайпы"... https://github.com/theam/tintin/pull/17#discussion_r190178211
Ilya
а за хугл кто отвечает вообще? там уже пару месяцев куча ссылок нерабочие например https://www.haskell.org/hoogle/?q=Compose
Aleksei (astynax)
hoogle-сервис всегда был ниочень. Hayoo лучче
A64m
хугл сам уже несколько лет нерабочий
Ilya
hoogle-сервис всегда был ниочень. Hayoo лучче
это что ль? https://hayoo.fh-wedel.de/?query=Compose там точно такие же нерабочие ссылки, как и в хугле (в моём случае)
Aleksei (astynax)
"Ссылки нерабочие", это "hackage не отвечает"?
Ilya
нет, это Page not found Sorry, it's just not here.
NC
Я чтот разбился о то, что time-1.9 умеет парсить таймзоны в формате HH:MM, а time-1.8 не умеет. А переехать на time-1.9 нельзя, т.к. на 1.9 не переехало 90% пакетов зависимостей
NC
Там этого нет, и это в обратную сторону работает, если тебе нужны старые функции, а не новые
Aleksei (astynax)
нет, это Page not found Sorry, it's just not here.
Сходил. Поискал. Прошел по ссылке - всё работает
IC
future-time-compat 😟
NC
Вот, боль
NC
Время велосипеды строить
Aleksei (astynax)
ркн?
Ilya
нет
Anatolii
какой-то плагин может в браузере?
Ilya
вот эти ссылки у тебя работают, да? три штуки
Ilya
у меня выдают вот что
Ilya
Aleksei (astynax)
https://hackage.haskell.org/package/transformers-0.5.5.0/docs/Data-Functor-Compose.html#t:Compose
Aleksei (astynax)
404
Aleksei (astynax)
Это не хугла проблема, а хакеджа
Ilya
Это не хугла проблема, а хакеджа
ну вообще похоже, что именно хугла. раз Compose теперь в base, то и выдавать должно ссылку на base
Ilya
то бишь вот эту, и она рабочая http://hackage.haskell.org/package/base-4.11.1.0/docs/Data-Functor-Compose.html
Ilya
а вот это нерабочая, которую хугл и hayoo выдают http://hackage.haskell.org/package/transformers-0.5.5.0/docs/Data-Functor-Compose.html
A64m
есть старый хугл который ищет по каким-то старым базам, есть новый хугл по другому адресу, который ищет по большему числу более новых пакетов, но поиск в нем сломан. есть новый хугл на стекедже, который в конкретных снэпшотах ищет (тоже поиск сломан, но на имена его хватит)
A64m
тл;др хугл не работает
Cheese
Отдел будущих технологий, где еще каспер ОС пилят
кажется, где-то ещё был Хаскель, но я приглашаю именно в ОС
A64m
можно, но он будет по именам искать, в новом хугле поиск по типам сломан
A64m
ну, можно собрать старую версию, наверное
Евгений
Is it a feature?
A64m
ну, когда автор делал новый хугл, он начал с того чтоб побыстрее базы формировались и грузились - и это он сделал, он вообще быстрее и переваривает большое кол-во пакетов но к тому времени как дошло до поиска по типам, он подустал и в результате он не сделан нормально
Ilya
>подустал
Ilya
а так не скажешь, что 30 лет комьюнити
A64m
короче говоря вот старый https://www.haskell.org/hoogle/?hoogle=%28a+-%3E+b%29+-%3E+f+a+-%3E+f+b вот новый https://hoogle.haskell.org/?hoogle=(a%20-%3E%20b)%20-%3E%20f%20a%20-%3E%20f%20b
A64m
разницу сами можете оценить
A64m
можно так, чтоб честнее было https://hoogle.haskell.org/?hoogle=%28a+-%3E+b%29+-%3E+f+a+-%3E+f+b&scope=package%3Abase
Слава
>подустал
"Чёт приуныл.jpg"
A64m
т.е. поиск по типам, прямо скажем, никогда в хугле нормально не работал, но то что выдает новый хугл - даже по хугловским стандартам очень плохо
Aleksei (astynax)
А что вы называете поиском по типам? Что-то особенное? По обычным типам ищет вроде да хоть тот же hayoo: http://hayoo.fh-wedel.de/?query=Traversable+t+%3D%3E+t+a+-%3E+a
Ilya
Вопрос в продолжение темы. Можно ли как-нибудь дерайвнуть/вывести Functor, Applicative для ньюйтайпа, сделав "как в Compose", не определяя его явно через Compose? @A64m_qb0 @kana_sama
Ilya
Просто не хочется портить типы, но хочется воспользоваться instance (Functor f, Functor g) => Functor Compose f g
A64m
А что вы называете поиском по типам? Что-то особенное? По обычным типам ищет вроде да хоть тот же hayoo: http://hayoo.fh-wedel.de/?query=Traversable+t+%3D%3E+t+a+-%3E+a
то что обычно рекламировалось как главная фича хугла, с которой он и ассоциируется в первую очередь
Aleksei (astynax)
https://www.haskell.org/hoogle/?hoogle=Eq+a+%3D%3E+%5Ba%5D+-%3E+%5Ba%5D
Aleksei (astynax)
Вот такое ищет более-менее. Или оно ломается?
A64m
Вопрос в продолжение темы. Можно ли как-нибудь дерайвнуть/вывести Functor, Applicative для ньюйтайпа, сделав "как в Compose", не определяя его явно через Compose? @A64m_qb0 @kana_sama
взять инстансы от композа и применить их к своему типу, который не является ньютайп оберткой вокруг композа?
A64m
Вот такое ищет более-менее. Или оно ломается?
см выше сравнение одного запроса к старому и новому хуглу
Aleksei (astynax)
Хмм. По ссылкам выше старый нашел. А новый - нет (позор и печаль).
A64m
короче говоря вот старый https://www.haskell.org/hoogle/?hoogle=%28a+-%3E+b%29+-%3E+f+a+-%3E+f+b вот новый https://hoogle.haskell.org/?hoogle=(a%20-%3E%20b)%20-%3E%20f%20a%20-%3E%20f%20b
A64m
можно так, чтоб честнее было https://hoogle.haskell.org/?hoogle=%28a+-%3E+b%29+-%3E+f+a+-%3E+f+b&scope=package%3Abase
Aleksei (astynax)
Ох
Ilya
Compose выглядит вкусно, но нужно переписывать типы через него..
A64m
Да:) Ну наверное я опять хочу странного
есть такая экспериментальная фича, которая не зарелизена, сейчас она только макросами реализована
A64m
Да:) Ну наверное я опять хочу странного
http://hackage.haskell.org/package/deriving-compat-0.4.2/docs/Data-Deriving-Via.html только для 8.2 и 8.4
A64m
самая дичь, конечно, что хугл и по полностью квалифицированному имени иной раз не находит то что нужно первым в списке
A64m
причем года три назад митчелл говорил что это все временно, потому что новый хугл недоделанный, но теперь это временное уже постоянно
кана
алиас на compose?
Если ты про то, что у тебя уже много где твой Fun {-# LANGUAGE PatternSynonyms #-} import Data.Functor.Compose type Fun f e a = Compose ((->) e) f a getFun :: Fun f e a -> e -> f a getFun (Compose f) = f pattern Fun :: (e -> f a) -> Fun f e a pattern Fun f = Compose f main :: IO () main = print $ (getFun . fmap show . Fun $ Just) 10
кана
и потом постепенно переписывать но вообще это ересь конечно
Ilya
и потом постепенно переписывать но вообще это ересь конечно
Ну мне это чем-то напоминает ситуацию с cata. С одной стороны мы можем изуродовать тип данных, переписав его через Fix, и получив cata бесплатно. А можем заюзать расширение (не помню название), которое само выведет cata для твоего типа. Первый подход мне раньше больше нравился, как-то более наглядно и академично, что ли. Но второй тупо удобнее, (при условии, что расширение не фейлит)
Ilya
Вот и здесь, можно переписать data через Compose, и всё получить "сразу", а можно хитровыдуманно, зато не портить типы
Ilya
http://hackage.haskell.org/package/deriving-compat-0.4.2/docs/Data-Deriving-Via.html только для 8.2 и 8.4
Наверное deriving via это то что нужно, вечером поподробнее посмотрю, спасибо
IC
что значит изуродовать/портить?
Ilya
что значит изуродовать/портить?
Заменять встроенную в язык композицию конструктором Compose, выражать встроенную в язык рекурсию конструктором Fix.
Ilya
Ну наверное паттерн-синонимы облегчают дело, я с ними не работал пока