演算子オーバーロードとユーザ定義型変換とカスタム数値リテラルとジェネリック単位元と

(12/8追記: 檜山さんの新しい記事を受けて、別バージョンを書きました。https://gist.github.com/matarillo/d9861bcce64b4b6ae4da 明日には新しいブログエントリーを書くつもりです。)

http://haskell.g.hatena.ne.jp/matarillo/20151202/1449027369の続き。

もともとの http://d.hatena.ne.jp/m-hiyama/20151202/1449016930に近しいコードに書き直しました。

Qプリフィックスとするカスタム数値リテラルを定義してみました。 0Q1Qの扱いをどうするか悩みましたが、実数 0.0および1.0からの変換と同じ扱いにしました。

MinPlus半環の単位元が必要な場合は、MinPlus.ZeroおよびMinPlus.Oneを使う想定です。

この2つが定義されているので、LanguagePrimitives.GenericZeroLanguagePrimitives.GenericOneを使うこともできます。といってもインライン関数以外で使ってもそんなにうれしくないですが……