26 lines
988 B
Racket
26 lines
988 B
Racket
#lang typed/racket/base
|
|
|
|
;; Example using the db library in Typed Racket
|
|
;; - require/typed gives specific type
|
|
;; - rename-in allows multiple specific types in a file (just need to deal with renamings)
|
|
|
|
;; -----------------------------------------------------------------------------
|
|
|
|
(require/typed db
|
|
(#:opaque Connection connection?)
|
|
(postgresql-connect (->* () (#:user String #:database String) Connection)))
|
|
|
|
(require/typed (prefix-in w: db)
|
|
(w:query-row (-> Connection String Any * (Vector Natural String))))
|
|
|
|
(require/typed (prefix-in s: db)
|
|
(s:query-row (-> Connection String Any * (Vector Natural Natural))))
|
|
|
|
;; -----------------------------------------------------------------------------
|
|
|
|
(define c (postgresql-connect #:user "ben" #:database "ipoe"))
|
|
(define r0 (w:query-row c "SELECT * FROM word WHERE word.word=$1" "blossoms"))
|
|
(define r1 (s:query-row c "SELECT * FROM word_syllables WHERE word_syllables.word=$1" (vector-ref r0 0)))
|
|
(displayln r0)
|
|
(displayln r1)
|