- *c++ *programming *haskellСтарые привычки такие старые. Привык, что operator[] для любой нормальной реализации ассоциативного контейнера вставляет новый элемент, если такого ключа еще нет, и перенес эту логику на Data.Map.update. Ну, еще два часа коту под хвост )from idead, 10 months ago
Replies (26)
- @PineappleZombie:А откуда она новый элемент возьмёт? Там же из сигнатуры ясноfrom 046cb161dc561c982af2a68e371312b8, 10 months ago
- @0xd34df00d:@jtootf Именно что лицопальма. Я тут сам смотрю на себя как на говно щя. insertWith няшечка. Реализуя семантику а-ля map [key].append (value) — insertWith (++) key [value]
- @0xd34df00d:@PineappleZombie Да вот то-то. R идиот, ибо не задал себе этот вопрос.
- @0xd34df00d:@akapetryxa Да разве ж это маньячество? )
- @PineappleZombie:@0xd34df00d Кстати \x → (++ [x]) имеет сложность O(n), (:) может быть более эффективен, но список будет перевёрнутый
- @0xd34df00d:@PineappleZombie Не катит — у функции в insertWith сигнатура a -> a -> a.from idead, 10 months ago, in reply to /9
- @PineappleZombie:@0xd34df00d Можно развернуть \x → ([x]++) или использовать Data.Sequencefrom 046cb161dc561c982af2a68e371312b8, 10 months ago, in reply to /10
- @PineappleZombie:@PineappleZombie Впрочем, если списки короткие может прокатить, и плевать на O(n²)from 046cb161dc561c982af2a68e371312b8, 10 months ago, in reply to /11
- @jtootf:@0xd34df00d Prelude> :t (\[x] list -> x : list)
(\[x] list -> x : list) :: [t] -> [t] -> [t]from galois, 10 months ago, in reply to /14 - @jtootf:@PineappleZombie O(n * log n), если мне зрение не изменяетfrom galois, 10 months ago, in reply to /13
- @PineappleZombie:@jtootf Откуда там логарифм возьмётся?from 046cb161dc561c982af2a68e371312b8, 10 months ago, in reply to /17
- @PineappleZombie:@jtootf Я про дописывание в конец спискаfrom 046cb161dc561c982af2a68e371312b8, 10 months ago, in reply to /19
- @jtootf:@PineappleZombie ну. дописывание в конец даст O(n), сама операция вставки — O(log n)from galois, 10 months ago, in reply to /20
- @PineappleZombie:@jtootf Если списки длинные, то snoc станет дорогим. Я напоролся на это однаждыfrom 046cb161dc561c982af2a68e371312b8, 10 months ago, in reply to /21
- @0xd34df00d:@PineappleZombie Почему бы просто не flip (++)?from idead, 10 months ago, in reply to /22
- @PineappleZombie:@0xd34df00d Можно и такfrom 046cb161dc561c982af2a68e371312b8, 10 months ago, in reply to /23
- @jtootf:@PineappleZombie аналогично. впрочем, связи с обсуждением сложности операции не вижу :)from galois, 10 months ago, in reply to /22