Size: a a a

2021 July 14

AP

Aleksei (astynax) Pi... in Haskell
fromList?
источник

AP

Aleksei (astynax) Pi... in Haskell
А, там есть перегрузка
источник

к

кана in Haskell
и она уже прямо в либе есть
источник

AP

Aleksei (astynax) Pi... in Haskell
👍
источник

K

Kir in Haskell
Бро
источник

[

[BRM]White Rabbit in Haskell
🌚
источник

K

Kir in Haskell
Это ж конструктор
источник

K

Kir in Haskell
Полностью согласен
источник

к

кана in Haskell
оба - конструктор
источник

к

кана in Haskell
один и тот же
источник

K

Kir in Haskell
Ну, так-то да
источник

JS

Jerzy Syrowiecki in Haskell
это синоним шаблона, притворяющийся конструктором
источник

JS

Jerzy Syrowiecki in Haskell
(:=) — инфиксный,
(,) — пре-ин-пост-фиксный
источник

JS

Jerzy Syrowiecki in Haskell
есть вариант
[ (,) k1 v1
, (,) k2 v2
]
но это ещё хуже
источник

K

Kir in Haskell
тут ещё скобки нужны будут, если они выражения
источник

АД

Алексей Данилевский... in Haskell
Доброго времени суток.
Написал простой сервис для манипуляций с изображениями: изменение размера + поворот в соответствии с exif-ориентацией. Сделал простой DSL на основе Free Monad так, чтобы можно было на уровне интерпретатора DSL использовать разные графические библиотеки. Поскольку каждая библиотека имеет своё внутреннее представление изображения, то нужно было как-то его упаковать в некий тип картинки для DSL. Первое, что попробовал, это
import Data.Dynamic
type Img = Dynamic

Все хорошо заработало. Но подумал, что слишком много получается преобразований в/из Dynamic. Решил переделать на
newtype Img a = Img a

Соответственно пришлось добавить параметр типа a к тайпклассу абстрактного интерпретатора. Так тоже заработало, количество кода сократилось, так как преобразования из Dynamic заменились простым паттерн-матчингом. Но самое интересное в том, что при тестировании производительности на одной и той же картинке скорость работы сервиса оказалась в разы лучше при использовании Dynamic. И даже программирование "в лоб" без DSL дало хуже результат, чем реализация через DSL с Dynamic. Мне казалось, что использования newtype должно наоборот сократить время доступа к содержимому картинки. Но практика показало обратное. Кто-нибудь может объяснить такое поведение? Может тайпклассы с несколькими параметрами тормозят? Или такое поведение вполне правильное, просто я чего-то не знаю/не понимаю?
источник

B

Bodigrim in Haskell
Это довольно странно. А что профайлинг говорит?
источник

B

Bodigrim in Haskell
Ну, вообще Data.Dynamic не то чтобы дорогой, но быстрее от него становиться не должно было бы
источник

АД

Алексей Данилевский... in Haskell
Я не знаю, что такое профайлинг. Как это посмотртеть?
источник

B

Bodigrim in Haskell
как запускаете приложение? cabal build, cabal run, иное?
источник