タグ

ブックマーク / khibino.hatenadiary.jp (5)

  • GHC Generic Programming と代数的データ型 - khibino blog

    Haskell Advent Calendar 2016 の 12日目のエントリーです。 代数的データ型と Functor Generic Programming は代数的データ型の構造を Functor の直積と直和のネスト構造に対応付けることで、 任意の代数的データ型に対する操作の記述を可能にする仕組みです。 まずは理解のために、より単純化した構造で考えてみましょう。 次のようなデータ型 ProdF f g a を考えると、 ProdF f g は Functor f および Functor g のもとで Functor になります。 これは、 もとの Functor のそれぞれの像の直積も Functor になる ということです。 ほぼ自明な内容ですが、 functor則を満たしていることを下に簡単に示してあります。 data ProdF f g a = ProdF (f a) (g

    GHC Generic Programming と代数的データ型 - khibino blog
  • OverloadedLabels と Haskell Relational Record - khibino blog

    Haskell (その2) Advent Calendar 2017 の 18日目のエントリーです。 OverloadedLabels のレコードでの利用 GHC 8.0.1 以降では OverloadedLabels 拡張がサポートされたことにより、 適切な定義を追加しておくことで、レコードのフィールド名の衝突を気にせずに利用できるようになりました。 以下 user's guide の example のコードです。 {-# LANGUAGE DataKinds, KindSignatures, MultiParamTypeClasses, FunctionalDependencies, FlexibleInstances, OverloadedLabels, ScopedTypeVariables #-} import GHC.OverloadedLabels (IsLabel(..)

    OverloadedLabels と Haskell Relational Record - khibino blog
    igrep
    igrep 2017/12/18
    いい感じに一般化されていて素晴らしい。
  • Haskell Relational Record を PostgreSQL アンカンファレンスで宣伝してきました - khibino blog

    Haskell Advent Calendar 2015 の15日目のエントリーです。 以前から、 Haskell Relational Record (HRR) [ http://khibino.github.io/haskell-relational-record/ ] を RDBMS のユーザーのコミュニティーにも紹介してみたいと考えていました。 ( HRR 自体についてはプロジェクトページ や チュートリアル を見てください ) HRR を使うと SQL の部品化とその型付けを行なうことができるため、 複雑な SQL を書く際の間違いを減らすことができるのが HRR を使うメリットです。 そのような方向でよく利用されていると思われる、PostgreSQL 系のイベントで発表してみようと思い、 PostgreSQL アンカンファレンス ( https://atnd.org/event

    Haskell Relational Record を PostgreSQL アンカンファレンスで宣伝してきました - khibino blog
    igrep
    igrep 2015/12/15
    "Composableバンザイ!"
  • 計算の合成 - khibino blog

    Haskell Advent Calendar 2014 の22日目のエントリーです。 導入 Haskell では計算を持った値であることを型で表わすことができる。 とくに計算を持っていない型は Int や a のような形をしている。 しかし例えば Maybe Int ならば、結果の型 Int の値は得られるかもしれないし得られないかもしれない。 Functor f => f a なら、結果の型 a を得るためには何らかの計算 f が必要だと考える。 プログラムを書くときには結果の値を計算するにあたって、様々な計算を利用する。 複数の計算をうまく組み合わせる方法が重要だ。 計算の連続適用 型 a に計算 h を適用したものにさらに計算 g を適用し、さらに f を適用すれば f (g (h a)) である。 ここでは、どんな計算を適用するかだけを考えることにして、単に fgh の様に並べて

    計算の合成 - khibino blog
  • Extending Query, Relational, Typeful, Composable - khibino blog

    Haskell Advent Calendar 2013 の19日目のエントリーです。 Haskell で SQL の複雑な検索式を記述するための、Relational Record というライブラリ(以下HRR)(https://github.com/khibino/haskell-relational-record) を作ったので紹介します。このライブラリを使うことで、検索式を部品化し、単純な検索式を組合せて、より複雑な検索式を組み立てることができます。 HRR は HaskellDB (http://hackage.haskell.org/package/haskelldb) を参考にした関係代数ベースのライブラリですが、カラム名の問題、外部結合、集約操作、Placeholderの問題点を克服する形で再構成しました。以下に順番に説明していきたいと思います。 結合について SQLの結合

    Extending Query, Relational, Typeful, Composable - khibino blog
  • 1