(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
をプリフィックスとするカスタム数値リテラルを定義してみました。
0Q
と1Q
の扱いをどうするか悩みましたが、実数 0.0
および1.0
からの変換と同じ扱いにしました。
MinPlus半環の単位元が必要な場合は、MinPlus.Zero
およびMinPlus.One
を使う想定です。
この2つが定義されているので、LanguagePrimitives.GenericZero
とLanguagePrimitives.GenericOne
を使うこともできます。といってもインライン関数以外で使ってもそんなにうれしくないですが……