кана
объект — тождественный морфизм
тождественный морфизм для чего?
кана
идентити морфизм чем-то индексирован
кана
fmap :: Functor f => (a -> b) -> (f a -> f b)
Nikolay
Я понял, что есть категория, где объекты все типы хаскель. Но functor для листа принимает только листв
Nikolay
Fmap (+2) [1,21]
Ilya
Fmap (+2) [1,21]
fmap (+2) даёт тебе функцию из листа в лист. это и есть отображение стрелок.
Nikolay
Вот тогда и получается, что я отображаю категорию, где объекты только списки
Nikolay
fmap я же к листу применяю
Ilya
Вот тогда и получается, что я отображаю категорию, где объекты только списки
нет, ты отображешь в категорию, где объекты только списки
Ilya
А из какой категорию?
из категории Hask (там все типы) в подкатегорию Hask, где все списочные типы.
Alexander
-- Scenario: Increment TVar -- Native STM 50.93 ns -- STM-Free, Data.Map, no optimizations 2.064 μs -- STM-Free, basic tweaks, HMap 558.2 ns -- STM-Free, basic tweaks, HMap - IO Refs 509.2 ns -- STM-Free, basic tweaks, hashtables + Any - IO Refs 843.3 ns -- STM-NoRemorse, basic tweaks, HMap - IO Refs 671.2 ns Понимайте, как хотите 😊
Nikolay
Я бы сказал, что в одной категори объекты листы всевозможных типов ( это подмножество хаскель)
Alexander
HMap оказалась быстрее всего. NoRemorse только все затормозил.
Nikolay
И отображаются в это же подмножество листов всевозможных типов
Oleg
идентити морфизм чем-то индексирован
У тебя есть класс морфизмов C, есть его подкласс 1_C, который ты считаешь объектами и айдентити морфизмами ты вводишь две функции dom и cod : C -> 1_C, такие, что dom(i) = cod(i) = i для любого i (- 1_C
Nikolay
Fmap принимает функцию :: a->b. Она является морфизмом функтора?
кана
Функтор для списка отображает объекты из a : Hask а [a] : Hask через [] (поэтому эндо) А так же отображает морфизмы f : a -> b в морфизсы f : [a] -> [b] через fmap был морфизм inc :: Int -> Int, стал морфизм fmap inc :: [Int] -> [Int]
Alexander
> Data.HashTable has been deprecated and you won't find it in current base. > It was deprecated because it performed poorly in comparison to hashtables. @A64m_qb0 Data.HashTable - это не та структура, которую ты мне советовал из GHC рантайма? Я что-то других не вижу
A64m
нет, не та
A64m
для нее хаскельные байндинги вроде отсутствуют
A64m
но можно самому писать, вон @qnikst писал
A64m
стоит ли с этим связываться - другой вопрос
Alexander
вечером пни, я код выхожу
Alexander
Окей, спасибо, парни
A64m
вообще, может для 100 элементов и нет смысла с таблицей связываться, это больше для случая миллионов элементов, когда девево сдохнет просто
Евгений
тождественный морфизм для чего?
Не для чего. Просто категория это множество стрелок, ЧАСТИЧНАЯ бинарная операция и выделенное подмножество стрелок (называемых тождественными). Наличие начала и конца ты можешь просто аксиоматически задать. Например: если задана композиция двух тождественных стрелок, то они равны. Если есть четыре стрелки f, f', g, g' таких что заданы f . g, f' . g, f . g', то задан и f' . g' (аналогично с другой стороны).
Евгений
Для этого есть теоркаточат бтв
adam
морфизм f это морфизм между чем и чем, если объектов нет
Любые функции — это функторы над идентификационными путями и вследствии соответствует утверждению непрерывности, а-ля сохраняют биекции. По индукции это доказывается через зацикленные пространства.
adam
Да у вас хоттянка
Только пацанам в школе не говори плз
Евгений
Ну просто это всё не работает в тьюринг-полном мире. Только скотт, только домены
Alexander
Хоттянка - это от слова "хотеть" или от слов "хот тянка"?
Евгений
От слова хотт и суффикса -анк
Cheese
Хоттянка - это от слова "хотеть" или от слов "хот тянка"?
от "Hoth" — такая снежная планета в Звёздных Войнах
Alexander
Блин, а я уж думал "горячая тянка"
Евгений
Кто-то хочет в леволиберальный гулаг?
Евгений
На базом уровне тут можно почитать https://en.m.wikibooks.org/wiki/Haskell/Denotational_semantics
Евгений
Евгений
А это если по хардкору
Pavel
благодарю 😊
Alexander
А теперь скажите, почему Хаскель не умеет реекспортить квалифицированные модули.
Alexander
умеет конечно
Alexander
module X (module Y) where import qualified Foo as Y
Alexander
как-то так должно сработать
Alexander
Это компилится, но не работает
Alexander
https://stackoverflow.com/questions/4385195/re-export-qualified
Alexander
в смысле не работает?
Alexander
если module Y (foo) было, то ты можешь вызвать import X (foo)
Alexander
Не приходит из квалифицированного модуля ничего, разве нет? И по указанной квалификации тоже недоступно
Alexander
должно приходить
Alexander
ну я до ghc скоро доберусь
Alexander
Еще нашел: The semantics of this re-export is a bit tricky, though. For example, what can we say about the following module? module M (module Data.List) where import qualified Data.List You’d probably think that module M now export everything that is exported by Data.List. Not at all! The standard says (emphasis is mine): Since we imported Data.List qualified, nothing from it is in scope under an unqualified name. So, M doesn’t export anything. Right? Not quite. https://ro-che.info/articles/2012-12-25-haskell-module-system-p1
IC
есть где туториал как писать несложные древесные типы чтобы под них потом значения подгонять?
Alexander
-- STM-Free, basic tweaks, Data.Map - IO Refs + Any 445.0 nsТакие дела. Похоже, мне таки придется остаться на Data.Map
A64m
вот это подозрительно уже
A64m
IORefы тут что означают?
IC
ничего непонятно
как в schematic, только совсем простые
Alexander
IORefы тут что означают?
У меня изначально данные тварей в рефах хранились. Потом я убрал эти рефы
A64m
а, минус рефы, понятно
Alexander
-- STM-Free, basic tweaks, Data.Map - IO Refs + Any 445.0 ns -- STM-Free, basic tweaks, HMap - IO Refs 509.2 ns Между этими случаями разница исключительно в мапе
Alexander
Но это были, конечно же, только "грязные" замеры, чтобы хотя бы приблизительно понимать порядок проблемы. Более правильное исследование я только собираюсь сделать
A64m
а ключи в случае Data.Map какие?
Alexander
Пока те же, Data.Unique
Alexander
Как раз сейчас делаю Int
Alexander
То есть, ключи везде одинаковые были
A64m
с них, наверное, и надо было начинать, контейнерные библиотеки в которых хеши считаются к такому могут быть чувствительны
Alexander
Не исключено.
Alexander
Мне надо какой-то конструктор сделать, чтобы имплементацию того и сего выбирать
Alexander
-- stm-free, basic tweaks, with Data.Map - IORefs + Any + Int keys: 317.5 nsЗамена Data.Unique на целый ключ, пусть даже с atomicModifyIORef', дала хороший пинок предыдущему результату на Data.Map.
Alexander
Для случая hashtables замена Data.Unique на Int результатов не принесла. Было и стало: -- STM-Free, basic tweaks, hashtables + Any - IO Refs 843.3 ns -- STM-Free, basic tweaks, hashtables + Any - IO Refs + Int keys 859.6 ns
A64m
а Data.IntMap?
Alexander
О! Еще не пробовал
Alexander
Data.IntMap относительно Data.Map с целыми ключами: опять обман ожиданий. Было и стало: -- stm-free, basic tweaks, with Data.Map - IORefs + Any + Int keys: 317.5 ns -- stm-free, basic tweaks, with Data.IntMap - IORefs + Any + Int keys: 366.5 ns