Параметризованные запросы к базе данных выглядят как стрелки:
- каждый имеет вход и выход
- они составляют
- мы хотим трактовать их иначе, чем функции Haskell
Композиция (.)
(или (<<<)
) выглядит как подзапрос SQL. (&&&)
выглядит как соединение SQL.
Я считаю, что «статически известное» ограничение относится к вещам, которые вы могли бы разумно преобразовать в SQL. Как только вы разрешите fmap
/ lmap
/ rmap
с произвольными функциями Haskell, это невозможно (по крайней мере, без расширений языка SQL и плагинов компилятора GHC). Я не проработал детали.
Я не знаю, сколько переводов мы могли бы выполнить вручную, используя Opaleye.