Well, there obviously is a problem in your example code. The argument "tableName" does not live in the world of types, so SqlExpr (Entity tableName) is meaningless (this barrier is getting fuzzier with each version of GHC, but well...).

Perhaps something can be done with existential types ?

Le 24/11/12 12:07, Erik de Castro Lopo a écrit :
Hi all,

Below my .sig is a little Persist/Esqueleto program that works correctly.

The getUserCount function does thr right thing and returns the number of
rows in the User table. However, what I'd like is a generic function
that returns the row count of any table, something vaguely like this:


    queryRowCount :: tableType -> SqlPersist IO Int64
    queryRowCount tableName = do
        [Value x] <- select . from $ \(_ :: SqlExpr (Entity tableName)) ->
                        return countRows
        return x


Is there any way to do this? Its probably possible in Agda, but can it
be made to work with GHC?

Cheers,
Erik