Есть ли строковый объектив для доступа к полям во время выполнения? - PullRequest
0 голосов
/ 21 февраля 2020

Похоже на этот вопрос , но еще больше во время выполнения.

Есть ли способ автоматически генерировать линзы или любой другой механизм для доступа к полям по имени во время выполнения?

Я ищу что-то похожее на field из generic-lens, за исключением того, что принимаю имя поля в качестве аргумента времени выполнения вместо параметра type-leve (и возвращаю Maybe ).

Мне достаточно удобно писать это самому, но я думаю, что это, вероятно, уже существует.

Пример

data Foo = Foo { bar :: Bar }
data Bar = ...

Получение Generic, вы можете использовать generic-lens, чтобы получить удобный field @"bar" объектив - но есть ли способ автоматически генерировать / получать fieldAtRuntime "bar", который ведет себя так же (или аналогично)?

Мотивация

I хотите перемещаться по некоторым пользовательским структурам данных, используя пути JSON. Для меня не имеет значения, что JSON может не совпадать точно с полями записи, но я не хочу сериализовать, проходить и десериализовать.

...