Haskell (GHC プラットフォーム) の初心者として、通貨/通貨操作を含むビジネス ドメインに関連するデータ型と算術演算の問題に遭遇し、解決策を探しています。
私は、(独立した)会計モジュールと(Webサービスを介して)インターフェースすることになっているアプリケーションを開発していますが、同時に、別のデータベース(PostgreSQL)に保存されているアドホックデータ入力用の(Web)ユーザーインターフェースを持っています。
私は C#/F# 環境から来ており、System.Decimal はそこでのコア ニーズをすべてカバーしています。私が間違っている場合は訂正してください。ただし、Haskell には、同等と見なされる統合された (デフォルトの) データ型がないようです。
理想的な選択は、任意精度の演算を提供するデータ型、または少なくとも Decimal128 (IEEE 754) の行にあるデータ型です。型は、丸め (最も近いものへの結合、ゼロからの結合、可能であれば偶数への結合) と、加算、減算、乗算、除算 (理想的には平方根も) をサポートする必要があります。型間の変換もサポートする必要があります。
私が見つけたものから、Hackageには計算を正確に実行することになっている2つのHaskellモジュールがあります-Data.FixedとData.Decimal(ちなみに、Haskellでカスタムリテラルを作成する方法はありますか-たとえば、123.45mをコピーしますF# から ?)。少なくとも後者は、(簡単なテストの後)私が知る限り、前の段落で説明したもののほとんどを有効にしますが、DB(Persistent / HDBC経由のPostgreSQL)とWebフレームワーク(YESOD)を追加するとミックスのものはそれほど桃色に見えません。そこでのサポートは不足しているようです。
私が説明したことをエンドツーエンド(データ入力=>データ処理=>ストレージ)で最小限の摩擦で可能にする他の組み合わせはありますか(たとえば、DBからロードした後の文字列からの手動キャストは、本当に強く型付けされた言語を持つのは奇妙に思えます)精度を失うことなく(任意のポインターを歓迎します)?