кана
он же Compose
кана
t = getCompose . fmap show . Compose $ f
кана
Compose это как раз твой Fun, только еще стрелка обобщена до функтора
Ilya
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
хугл сам уже несколько лет нерабочий
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% пакетов зависимостей
IC
NC
Там этого нет, и это в обратную сторону работает, если тебе нужны старые функции, а не новые
Aleksei (astynax)
IC
future-time-compat 😟
NC
Вот, боль
NC
Время велосипеды строить
Aleksei (astynax)
Ilya
Aleksei (astynax)
ркн?
Ilya
нет
Anatolii
какой-то плагин может в браузере?
Ilya
Ilya
вот эти ссылки у тебя работают, да? три штуки
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
то бишь вот эту, и она рабочая 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
тл;др хугл не работает
Евгений
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
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
Aleksei (astynax)
https://www.haskell.org/hoogle/?hoogle=Eq+a+%3D%3E+%5Ba%5D+-%3E+%5Ba%5D
Aleksei (astynax)
Вот такое ищет более-менее. Или оно ломается?
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
Ilya
Compose выглядит вкусно, но нужно переписывать типы через него..
кана
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
IC
что значит изуродовать/портить?
Ilya
Ну наверное паттерн-синонимы облегчают дело, я с ними не работал пока