Persistent довольно удобен в использовании и позволяет вам полагаться на тип, чтобы определить таблицу, к которой относится ваш запрос. Например, если в моем файле "models" есть следующее:
User
name Text
age Int
Login
user UserId
login Text
passwd Text
Тогда я мог бы сделать это:
Just (Entity uid _) <- selectFirst [ UserName ==. "Some User ] []
Just (Entity lid Login {..}) <- selectFirst [ LoginUser ==. uid ] []
И он знал бы, какие таблицы я имел в виду. Конечно, вы, вероятно, не хотите писать такой частичный код, но я хотел подчеркнуть только запросы.