Alexander
а дальше если хочется плохо спать то можно прочитать про RunTimeRep
Alexander
или чего там алиасом сейчас является *
Alexander
и про levity polymorphism
Alexander
ну или тут кто-нить добрый простыми словами расскажет
Denis
в сорцах написано type (*) = Type, но если копнуть дальше, то там вся эта ботва про рантайм-полиморфизм
Denis
в Data.Kind это живет сейчас
Anonymous
ага, это понятно
Anonymous
но этот синтаксис в hackage все еще не понятен
Anonymous
(в источниках его нету)
Denis
это фактически Profunctor Tagged
Denis
я детально не помню нить событий почему в выводимых типах и документации так стало отображаться
Anonymous
может это показывает что первый аргумент Tagged не имеет любой кайнд, а только *
Denis
ну вообще это логично, т.к. для него должен быть contramap, а значит он *
Anonymous
хотя в таком контексте еще странее
Denis
хз, мне все кажется логичным
adam
хотя в таком контексте еще странее
~ (a -> b) -> (c -> d) -> p b c -> p a d
A64m
D 7.4 можно будет на модулях делать левити-полиморфный код (фичу уже вмерджили)
Anonymous
~ (a -> b) -> (c -> d) -> p b c -> p a d
если мы добавляем * то у нас получается кайнд * -> * и отсутствует место для c / d
A64m
но, думаю, мало кто будет
adam
github.com/ghc/ghc/blob/master/libraries/ghc-prim/GHC/Types.hs#L63 * используют как плейсхолдер вместо () т.к. это сущности якобы разной природы newtype Tagged s b = Tagged { unTagged :: b } deriving и newtype Clown f a b = Clown { runClown :: f a } и newtype Joker g a b = Joker { runJoker :: g b }
A64m
да, 8,4 конечно
adam
Примерно так и Maybe определяется бифунктором type Maybe a = Either (Const * a) (Id a)
adam
В моём понимании конечно
adam
спс
Anonymous
если мы применяем () то у нас опять кайнд * -> *
Maxim
я бы еще multichromosome добавил
adam
если мы применяем () то у нас опять кайнд * -> *
downloads.haskell.org/~ghc/7.8.1-rc1/docs/html/users_guide/kind-polymorphism.html
Anonymous
так я читал, но там ничего на эту тему не сказано
A64m
к чему () применяем?
Alexander
но, думаю, мало кто будет
никто не напишет нормальные hashmap?
A64m
для хешмапа-то это и не надо
Anonymous
к чему () применяем?
ну systemspace говорит что * используется как плейсхолдер вместо ()
adam
не
A64m
где в type Maybe a = Either (Const * a) (Id a) ?
Alexander
для хешмапа-то это и не надо
кстати на чем поиграться с модулями чтобы посмотреть/показать data specialization, которое поидее с ними можно?
A64m
на старых исходниках для Map из контейнерс, наверное. (до этого всего адища с пойнтерами, которое там сейчас)
A64m
но это Тибелл утверждает, что от этого значительный прирост производительности будет, не я
Denis
тибелл любит адище с указателями
A64m
толку в хешмапах точно не будет - от специализации типа элемента массива его предсмтавление не поментяется, в отличие от конструктора
Anonymous
ой чет я совсем запутался
Anonymous
откуда здесь их три
Anonymous
А
Anonymous
k это кайнд
A64m
@catamorphism я тут не про адище с пойнтерами, а про толк от специализации дерева под ключи и значения
A64m
@anarchostatist да
Anonymous
такк, и в итоге что нам показывает кайнд в аргументе конструктора типа?
A64m
Чтоб хешмап сделать, который от анбоксинга в массивах будет толк какой-то получать надо hashMap вообще весь переписывать иначе
Denis
кайнд первого параметра он показывает, как и в прошлом случае
Anonymous
аа ок, спасибо
Alexander
хотя вот все эти TypeFamilies для этого в т.ч. изобретали
Anonymous
и таких кайндов может быть несколько, да? если да, то T k a k b или T k k a b?
A64m
но у такого типа деревьев производительность (в случае сотен тысяч элементов и выше особенно) всегда будет отстойная. Надо HAMT, но тут от специализации толку нет, надо анбоксед вектора
A64m
ну есть пакет в котором специализация для списков туплов мейби и чего-то там еще на семействах сделана
A64m
но на списках там особо не намерить преимущества ждаже
A64m
на HAMT , RRB и прочем такого типа на анбоксед массивах хоть что-то наблюдаемое может будет, там то число ссылок хотя-бы на десятичный порядок меньше может быть а не в два раза
A64m
ну и они обычно долгоживущие, списки-то специализировать - вообще бессмысленная трата времени
A64m
@anarchostatist несколько одинаковых-то зачем? С ними все примерно также как и с параметрами типов
Anonymous
просто пример
Denis
и таких кайндов может быть несколько, да? если да, то T k a k b или T k k a b?
кайнд второго параметра только * может быть, про это выше говорили, поэтому он не может быть параметром
Bogdan
Кто-нибудь имел опыт с Curry? Что скажете? Насколько отличается от Хацкеля и насколько совместим с оным? Имеют ли фичи логической парадигмы смысл в использовании внутри фп?
Nikolai
а Curry вообще жив?
Nikolai
мне казалось, Mercury только выжил
A64m
думаю нет, но это зависит от того, что понимать под "жив"
☻️
/stat@combot
Combot
combot.org/chat/-1001043143583
Alexander
блин притащили bors теперь в истории репозитория адищще какое-то :(
Алексей
В смысле мерж на мерже?
Alexander
да
Alexander
ранье можно иногда было в граф посмотреть, что вообще происходит
Alexander
хорошо хотя бы веток по 5 месяцев нету
Алексей
За это я не люблю стратегия бесконечных мержей
Alexander
и сейчас вообще никто не парится с промежуточными коммитами
Alexander
вон у нового фронтэндщика 50 коммитов из которых 2/3 - добавил точку с запятой
Alexander
а потом пытайся git log смотреть по репозиторию
Leonid 🦇
что есть bors?