"рекорды (HKD) с индексами в виде текстового представления полей"
это
data X f = X
{ a :: f "a" Int
, b :: f "b" String
}
?
Нет, в самих полях этого не должно быть
В barbies есть обычный травёрс по полям, но я хочу, чтобы каждое конкретное действие зависело от имени поля