PartialTypeSignatures, :
query_ "select * from books" >>= (writeJSON :: [Book] -> _)
query_; do :
listBooks :: AppHandler ()
listBooks = do
results <- query_ "select * from books" :: _ [Book]
writeJSON results
GHC . , writeJSON query_ , :
query_ @[Book] "select * from books" >>= writeJSON
query_ "select * from books" >>= writeJSON @[Book]
, , ,
query_ "select * from books" >>= asAppliedTo [Book{}] writeJSON
Book - Book ( , [Book{}], , ). , , asAppliedTo - , hoogle ; :
asAppliedTo :: arg -> (arg -> result) -> (arg -> result)
asAppliedTo _ = id