DSH-0.6.2: examples/Example2.hs
-- This example was taken from the paper called "Comprehensive Comprehensions"
-- by Phil Wadler and Simon Peyton Jones
{-# LANGUAGE QuasiQuotes, OverloadedStrings #-}
module Main where
import Prelude ()
import Database.DSH
import Database.DSH.Compiler
import Database.HDBC.PostgreSQL
employees :: Q [(Text, Text, Integer)]
employees = toQ [
("Simon", "MS", 80)
, ("Erik", "MS", 90)
, ("Phil", "Ed", 40)
, ("Gordon", "Ed", 45)
, ("Paul", "Yale", 60)
]
query :: Q [(Text, Integer)]
query = [qc| tuple (the dept, sum salary)
| (name, dept, salary) <- employees
, then group by dept
, then sortWith by (sum salary)
, then take 5 |]
getConn :: IO Connection
getConn = connectPostgreSQL "user = 'giorgidz' password = '' host = 'localhost' dbname = 'giorgidz'"
main :: IO ()
main = do
conn <- getConn
result <- fromQ conn query
print result