ハスケルでは、データ型を定義するときに、 のインスタンスを自動的に派生させることができますが、自動導出を延期できますか、おそらく 別のライブラリに入れますか?ここで宣言後の自動インスタンスの導出
は一例です:Haskellで導出
自動実際の時間の節約です!
module MoneyModule where
data Money = Money Int
deriving Show
今私はMoneyModule
を使用したいが、私はまたMoney
ためRead
インスタンスをしたい:
module ExternalModule where
instance Read Money where
read = error "Can't this be done automatically instead?"
しかし、それは自動的に導出されるために、私は本当に私はGHCができた知っている、好適だろうMoneyModuleの作成者だけがRead
インスタンスを自動派生した場合には、この処理は完了しています。
私がことを知っている:
- はそれが欠けているインスタンスとそれにパッチを適用することにより、実際の
MoneyModule
で問題を解決する方が良いでしょう。 - 孤立したインスタンスを持つことは悪いと考えられます。インスタンス宣言 は、好ましくは、型クラスまたはデータ タイプが定義されたモジュールに入れられます。
私の場合、タイプクラスはデータタイプと無関係であるため、ベストプラクティスに従うことはできません。私は型クラスモジュールやデータ型モジュール がインスタンスを保持したいと考えているので、一部の アプリケーションではインスタンス宣言が必要であるため、3番目のライブラリを作成しています。