Foo
{ _foo :: HKD f Float
, _bar :: HKD f Int
, _baz :: HKD f String }
Можно ли как-то при помощи магии линз сделать функцию
apply :: Foo ((->) a) -> a -> Foo Identity
не упоминая в имплементации foo, bar, baz?
На темплейт хаскелле можно генератор этой функции написать. Указать-то придётся, но у темплейт хаскелля есть доступ к именам и объявлениям как к AST
Ненадо есть btraverse из barbies
ну так это sequence, только hkd-шный hsequence :: h f -> f (h I) Foo ((a -> _)) -> (a -> _) (Foo I) в barbies нужно искать чет такое, да
Обсуждают сегодня