我想有這個漂亮的,乾淨的方式來描述一個對象的功能和模式匹配特性:函數聲明在多行
data Animal = Cat | Dog | Cow
isBig :: Animal -> Bool
isLoyal :: Animal -> Bool
-- many more possible properties, including complicated non-bools, methods, and whatnot
--- Describing Cat
isBig Cat = False
isLoyal Cat = False
--- more properties
--- Describing Dog
isBig Dog = False
isLoyal Dog = True
--- more properties
--- Describing Cow
isBig Cow = True
isLoyal Cow = False
--- more properties
然而,這給出了關於多個聲明錯誤。因爲,顯然,通過模式匹配的功能定義必須在連續的行中完成。
這是否表明我的方法是錯誤的,類似於Haskell?或者這只是語言中的缺陷?或者我誤解了一些東西?
在這種情況下,它沒有任何意義 - 或者我會在我的答案也提到了 - 但也許你的問題的情況下是一個什麼樣你實際上是試圖做的簡化。如果是這樣,你可以考慮製作一個包含'isBig','isLoyal'等的類型類,並且製作實現這個類的_types_'Dog','Cat'和'Cow'類。然而,這是非常不同的:與類型不同,類是開放的。 –