AP
Size: a a a
AP
AP
[
JS
JS
JS
[ (,) k1 v1
, (,) k2 v2
]
но это ещё хужеАД
import Data.Dynamic
type Img = Dynamic
newtype Img a = Img a
a к тайпклассу абстрактного интерпретатора. Так тоже заработало, количество кода сократилось, так как преобразования из Dynamic заменились простым паттерн-матчингом. Но самое интересное в том, что при тестировании производительности на одной и той же картинке скорость работы сервиса оказалась в разы лучше при использовании Dynamic. И даже программирование "в лоб" без DSL дало хуже результат, чем реализация через DSL с Dynamic. Мне казалось, что использования newtype должно наоборот сократить время доступа к содержимому картинки. Но практика показало обратное. Кто-нибудь может объяснить такое поведение? Может тайпклассы с несколькими параметрами тормозят? Или такое поведение вполне правильное, просто я чего-то не знаю/не понимаю?АД