July 7th, 2015

Book

Осваиваю гомофункторы

Есть функция map . second :: (a -> b) -> [(c, a)] -> [(c, b)]. Идейно - это просто Data.Bifunctor.second

Но практически нужный инстанс - это Data.Bifunctor.Tannen. Мне что, runTannen . second f . Tannen предлагается писать?
Book

Наш Эшер

newtype Hyp = Hyp (Hyp -> Bool)

Множество, изоморфное множеству своих подмножеств, беспезды! Ну или фиксированная точка неполиномиального контравариантного функтора.
Book

Очередная порция

Вычистил снова конюшенки - порефакторил, убрал из проходов хупловский бойлерплейт, трассы, а также странный код, убирание которого не порушило тесты. В HN/Optimizer/FormalArgumentsDeleter.hs (и других 5 проходах) теперь красотища, осталось только переименовать да лишние экстеншены поубирать. Бойлерплейт лежит в Pass.hs и Utils.hs. Теперь зато лес видно!

Дальнейшие планы:
- искать места, куда приткнуть генерические шняги;
- пытаться свежим взглядом проходы окинуть - как-то подозрительно, что проходы либо с пустой трансфер-функцией, либо с пустой перезаписывающей;
- пилить, наверное, инлайнинг "простых алиасов" вида foo x y = bar x y, а уж потом только за while браться.