Я изучаю возможность использования монадных включений для представления SQL-запросов и генерирования соответствующего SQL. На первый взгляд, это не проблема, кажется, что все в порядке. Но я должен ограничить типы, которые могут образовывать монаду, только произведениями, без сумм, и я не могу придумать, как разместить такие ограничения.
Я хочу использовать средство проверки типов, чтобы убедиться, что можно использовать только те типы, которые могут быть представлены в SQL.
Полагаю, я мог бы использовать шаблонный haskell для получения правильных экземпляров и отказаться от получения, если тип не подходит, но я бы предпочел, чтобы это делалось на уровне типов. Меньше шансов, что я внесу ошибки из-за моего невежества.
Как я мог это сделать? Если да, не могли бы вы порекомендовать несколько примеров чтения и/или кода, пожалуйста.
Редактировать:Спасибо, у меня есть несколько хороших путей, которым нужно следовать, которые требуют дополнительного чтения :) А вот и длинные выходные.