A64m
работа пошла Марлоу на пользу: > Increasing the nursery size reduces the cost of GC overall (caches notwithstanding), so the numbers might look good even if you set the default to 20MB on a machine with a 1MB cache. (но вывод о том, что дефолтный A должен быть побольше далее все равно не следует)
Mikhail
Почему такая запись называется бесточечной? fn = ceiling . cos . max 50
A64m
> The term originated in topology, a branch of mathematics which works with spaces composed of points, and functions between those spaces. So a 'points-free' definition of a function is one which does not explicitly mention the points (values) of the space on which the function acts. In Haskell, our 'space' is some type, and 'points' are values.
Edgar
потому что под точкой понимают не символ точки, а точку, в которой функция определяется, здесь это можно переписать как: fn x = ceiling (cos (max 50 x))то есть ты определил fn в точке x переписал через композицию, сделал эта-редукцию -- получил бесточечную запись
Alexander
Почему такая запись называется бесточечной? fn = ceiling . cos . max 50
Вокруг этой записи много курьезов. Бесточечность почему-то вовлекает точки. А в английском - point-free заменяют на pointless, намекая на то, что нафиг оно надо вообще.
Mikhail
Стало понятней. Спасибо.
Евгений
Называли бы комбинаторной, было бы понятнее
Ilya
Почему такая запись называется бесточечной? fn = ceiling . cos . max 50
можно определять f x = g x (подразумевая for all x) а можно f = g Первое — это поточечное равенство (для любой точки x), второе - бесточечное. чтобы записывать поточечное f x = g (h x) в бесточечной форме f = g . h, нужна операция композиции (.) и другие функции высшего порядка. А то что сама композиция обозначается точкой — это просто забавный казус, не более. В математике она обозначается не точкой, а кружочком, например.
A64m
в sml-е еще
A64m
как все бросились про пойнтфри объяснять. а как сложное что спросят - и молчат все
Anonymous
😜 Так естественно же.
Alexander
Что вы так сложно объясняете. f x = g x - вызываем функцию g от того же аргумента, что и функцию f. Фактически, передаем дальше. f = g - даем другое имя функции g. Ну а раз другое имя того же самого, значит, и аргументов столько же. То есть, запись f x = g x - это тоже "задаем другое имя функции" Но прелесть в том, что в Haskell между этими вещами - вызовом функции и заданием имени - нет разницы. И это идет еще из лямбда-исчисления, которое можно понимать в двух смыслах: либо как уравнение, либо как вызов функций
Alexander
мне показалось или первая самая цитата полностью все раскрывала?
Сергей
Кто общался с админами хакаджа, они как, обычно, долго отвечают?
Alexander
@s_ivanov вроде от вопроса зависит
Сергей
Попросил добавить меня в группу чтоб мог загружать пакеты на хакадж. Несколько дней уже не отвечают
Сергей
Два раза писал даже
Сергей
может нужно не по почте связываться
Alexander
хм.. они эту фигню не убрали ещё?
Сергей
нет, так и ограничивают новичков
Alexander
жестоко
Leonid 🦇
cborg Serialise vs ByteString.Lazy и свой тайпкласс для рпц?
A64m
потому, наверное, и хештаблицы нету нормальной для хаскеля - на хекедж не пускают
Alexander
LBS - поидее ты не ограничиваешь человека в выборе
Alexander
но хз
Alexander
с другой стороны ты не можешь сделать хорошие политики записи
Leonid 🦇
Они это убрали и тут-же начались загрузки говна. Пришлось обратно вернуть.
A64m
обязательно боксед, но и с учетом этого тормозят. почему - я не знаю
Alexander
тормозные
A64m
они побыстрее на 8.2 кстати
A64m
но все равно тормозят
Alexander
Гм, гм, а как с ними сравнится unordered-containers? Там не хеш-таблицы, а деревья, насколько я понял.
A64m
еще в разы тормознее, дерево же
A64m
особенно при дефолтных настройках A
Alexander
А что бы такое запользовать гетерогенное для хранения данных по ключу? HMap я уже запользовал, выигрыш колоссальный. Может, можно что-то еще придумать? Или если пойти через Typeable / Data, можно ли сэкономить, запихнув в гомогенную мапу?
A64m
а сколько значений надо хранить?
Alexander
Это зависит от того, как используется либа (STM). Но стоит расчитывать на базовый сценарий с количеством TVar, не превышающих сотню
Alexander
В крайнем случае можно подумать над несколькими рантаймами для разных сценариев. Моя либа, в принципе, позволяет это сделать, только немного передизайнить контекст нужно будет (что вообще говоря в планах)
Alexander
И пользователь бы сам выбрал тот или иной рантайм, какой ему больше подходит по задаче.
A64m
а ключи какие?
Alexander
Data.Unique
Alexander
Но, кстати, тоже вопрос, что лучше подходит для идентификации в пределах программы.
A64m
это очень плохо
A64m
Integer же
Alexander
А что с ними? Да, там внутри есть собственная синхронизация
Alexander
Integer же
Длинный тип? Тогда, конечно, не очень
A64m
а мап может быть мутабельным?
Alexander
Мап может быть любым, лишь бы выполнял свою функцию. Тред-сейфность я обеспечиваю другими средствами
A64m
тогда поискать возможность чтоб ключи были Int или несколько интов, использовать хештаблицу из ghc-ного рантайма с индексами в мутабельном массиве Any, с кастами к нужному типу быстрее, думаю, не сделать
Alexander
Круть, спасибо!
A64m
ну, можно для числа порядка 10 просто в массиве искать без таблицы вообще
A64m
но ощутимая разница, конечно, будет для больших значений, не для 100
Alexander
ghc-шная ж тормозная какая-то
Alexander
либо я её криво использовал
A64m
c ccall unsafe нормально же было
Alexander
разве?
Alexander
блин надо бы найти где я мерял
Alexander
на другом ноуте точно
A64m
https://gitter.im/ruHaskell/forall?at=576302d963ea0987306bb7b2
Alexander
пасиб
Alexander
вечером я планировал тот ноут включать, а тут и путь написан
Alexander
@graninas хотя если тебе код надо могу и сейчас врубить
Alexander
заодно на гитхаб залью
A64m
как я понял у аэсона, т.е. фактически анордеред-контейнерс у анордеред-контейнерс
Alexander
unordered-containters+сериализация медленнее unordered-containtrs
Alexander
HMap у кого выигрывает?
До него была обычная мапа из стандартных, но вообще там я много оптимизаций за раз сделал, так что однозначно не скажешь.
Cheese
unordered-containters+сериализация медленнее unordered-containtrs
сериализация медленнее её отсутствия
Alexander
хм.. да, скорее всего так
Cheese
точно?
не уверен, надо бенчмаркать
Cheese
я просто вывел следствие из твоей реплики
Alexander
все верно, она именно про это следствие и была
Alexander
@A64m_qb0 я кстати в твиттере сделал опрос про ghc user guide, может человек 20 ответят
Alexander
я бы ещё про документацию base сделал