для сложных структур данных?
Вот у меня есть
data Expr f
= EValue Int
| EVar String
| EBin ExprBinType Expr Expr
| EUn ExprUnType Expr
deriving (Generic)
И хочется быстро проверять, генерировалось ли уже некое выражение? Я сейчас делаю через Set.member expr alreadyGenerated.
Неплохо, в принципе. Но, может, что-то уже пошустрее появилось?
да много чего есть, но зависит от задачи
звучит как кэш. можете попробовать HashSet, хэширование может работать быстрее, чем сравнение
Кстати, да, должно сработать, спасибо
HashSet + прокешировать hash, чтобы сэкономить на компарации. Что щас профайлер говорит?
не факт. скорее всего, построение множества реализовано точно так же — через добавление по одному
https://hackage.haskell.org/package/containers-0.6.5.1/docs/Data-Set.html#v:alterF
Фигасе, точно :-/
Обсуждают сегодня