我在使用Haskell的類型系統時出現問題。我確定我的問題很常見,但我不知道如何描述它,除非是針對我的程序。使用Haskell的類型系統實現正確的抽象
我試圖代表的概念是:
數據點,其中每一個取若干形式中的一個,例如(id,病例數量,控件數量),(id,病例數量,人口數量)
集合數據點和集合信息:(一組id,總個案,總控件)除去點(所以每個品種點,都有一個對應的各種組)
我能有一類點類型,並確定每個品種的點作爲自己的類型。或者,我可以爲每個品種提供一個點類型和一個不同的數據構造函數。類似的點集。
我有每種方法至少一個擔憂:
隨着類型類:避免函數名稱衝突將是煩人。例如,這兩種類型的點都可以使用一個函數來提取「個案數量」,但是類型類不能要求使用該函數,因爲其他點類型可能沒有案例。如果沒有類型類:我寧願不導出Point模塊(提供其他更安全的函數來創建新值)的數據構造函數。如果沒有數據構造函數,我將無法確定給定Point值的種類。
什麼樣的設計可能有助於減少這些(和其他)問題?
在你需要同樣對待你的數據點在什麼情況?你說每個表單都需要自己的各種集合,而像「案例數量」這樣的操作並不普遍。 –