HRR
Haskell Relational Record
関係代数をベースとしてSQLを組み立てる
コンパイルが通れば正しいSQLが生成される
日本製
github
website
tutorialなど
以下の3つのpackageを使う
persistable-record
SQLとhsの型の変換を定義
relational-query
SQLを生成を担う
https://hackage.haskell.org/package/relational-query
relational-query-HDBC
HDBCからHRRを使う為に使う
RDBMSのtable定義を読み込んで、対応するhsの型を生成する
つまり、コンパイル時にtable定義とhsの型の矛盾点に気づける
ただし、コンパイル時にRDBMSに接続できる状態である必要がある
#??
なんでこの辺も自分でdepsに書かないといけないんだ?
HRR入れたら全部入るようにするのは違うのか
抽象的
高レベルな式からSQLを生成
DB2、ProsgreSQL、SQLite、MySQL、MicroSoft SQL Server、OracleSQLに対応
型安全
HRRの式を書いたHaskellのコードがコンパイルできれば、必ず正しいSQL文が生成される
プレースホルダーにも型が付く
合成可能
式を合成して、より大きな式を作成できる
自動的
コンパイル時に目的のDBへ問い合わせて、SQLスキーマを自動的に取得し、レコードの定義を自動生成する
関数
.=.,.<.,.<=.のような.で囲まれた演算子
relation
引数はQuerySimpleモナド型
QuerySimpleモナド
MonadQuery型クラス
MonadRestrict型クラス
Template Haskell
開発者
@khibino
@kazu_yamamoto
etc.
#古い情報
Dtabase.Relational.Queryはなくなっている
かわりに、Database.Relationalを使う
参考
Haskell Relational Record をリリースしました - あどけない話
OSSの整備ってこんな大変なのか..mrsekut.icon
Extending Query, Relational, Typeful, Composable - khibino blog
開発者の@khibinoの2013年の紹介記事
https://htmlpreview.github.io/?https://github.com/khibino/haskell-relational-record/blob/master/doc/slide/code-reading-201601/SourceTreeJ.html
https://github.com/worksap-ate/demo/blob/master/haskell-relational-record-%E3%81%AE%E8%AA%BF%E6%9F%BB.md
http://tune.hateblo.jp/entry/2014/06/21/161745
https://qiita.com/lotz/items/3aa65852bf75f3538d11
https://na4zagin3.hatenablog.com/entry/2017/12/28/224653
https://logmi.jp/tech/articles/320396
https://qiita.com/peus/items/cda49133e7e7300d550c
https://htmlpreview.github.io/?https://github.com/khibino/haskell-relational-record/blob/master/doc/slide/PostgreSQL-Unconference-201512/Query.html
https://mail.haskell.org/pipermail/haskell-cafe/2014-December/117305.html