ppx_rapper は OCaml で SQL を扱うときの便利ライブラリで、SQL を書くと PPX によってそれを Caqti を使って RDB にアクセスする OCaml コードに変換してくれます。
ppx_rapper の README を見ると、以下のように使えるようになっています:
let my_query =
[%rapper
get_opt
{sql|
SELECT @int{id}, @string{username}, @bool{following}, @string?{bio}
FROM users
WHERE username <> %string{wrong_user} AND id > %int{min_id}
|sql}]
実際これは動作するのですが、実は let%rapper を使う別記法もサポートされています。以下のように使います:
let%rapper my_query =
get_opt
{sql|
SELECT @int{id}, @string{username}, @bool{following}, @string?{bio}
FROM users
WHERE username <> %string{wrong_user} AND id > %int{min_id}
|sql}
record_out などもそのまま後ろにつながれば動きます。[%rapper ...] の記法と比べて自然に書けるので重宝しています。