我想有一個檢查一個類實例的屬性功能:哈斯克爾類屬性檢查
class ListWithAtLeastOneElement a where
list :: [a]
check :: Bool
check = (length list) >= 1
但GHC編譯時我得到這個錯誤: 「類方法‘檢查’提到無類ListWithAtLeastOneElement的類型變量a當檢查類方法時:check :: Bool在「ListWithAtLeastOneElement」的類聲明中「
有沒有更好的方法來做我想做的事,或者一種方法來獲取它在GHC中編譯?
小問題:最好檢查列表是不是空值而不是檢查長度。但是像TomMD的答案那樣創建一個新的數據類型會更好。 – 2011-03-17 18:08:11
@John:創建新數據類型的更好取決於上下文。如果需要經常轉換到標準列表和從標準列表轉換,則新類型的包裝可能會更好。但我同意'不'空'會更好。我想保留原始帖子代碼至少一個細節。 – jmg 2011-03-18 15:20:30