Tôi muốn sử dụng haskell để triển khai trò chơi và muốn sử dụng hệ thống các lớp loại để triển khai hệ thống mục. Nó sẽ làm việc một cái gì đó như thế này:Kiểm tra Typeclass Haskell
data Wood = Wood Int
instance Item Wood where
image a = "wood.png"
displayName a = "Wood"
instance Flammable Wood where
burn (Wood health) | health' <= 0 = Ash
| otherwise = Wood health'
where health' = health - 100
nơi Item và các lớp học dễ cháy là một cái gì đó như thế này:
class Item a where
image :: a -> String
displayName :: a -> String
class Flammable a where
burn :: (Item b) => a -> b
Để làm điều này, tôi sẽ cần một cách để phát hiện xem một giá trị là một thể hiện của một loại lớp.
Mô-đun Data.Data cung cấp chức năng tương tự để dẫn tôi tin rằng điều này là có thể.
Tôi không chắc chắn những gì bạn đang làm phù hợp với mô hình kiểu Haskell. Đó là một giá trị là một thể hiện của một loại lớp nên được chứng minh tĩnh. – millimoose
Giá trị không thể là trường hợp của các lớp loại. Các kiểu là các thể hiện của các lớp kiểu. –
Xem [mục FAQ này] (http://www.haskell.org/haskellwiki/FAQ#I.27m_making_an_RPG._Should_I_define_a_type_for_each_kind_of_monster.2C_and_a_type_class_for_them.3F). – ehird