Я хочу иметь общий тип, который может представлять любой класс в простой диаграмме классов. В этом случае класс содержит:Общий тип для классов OO в Haskell
- Имя
- любое количество аргументов любого типа
- Любое количество функций, которые принимает любое количество аргументов любого типа
У меня есть только использовал простые декларации ADT, которые не работают в этом случае, например, это то, за чем я застрял, но это не дает мне приближаться к типу гибкости, который я получаю после:
data Attr a = Attr { name :: String
, kind :: a}
deriving (Show)
data Action = Action { name1 :: String
, params :: [Attr Int]}
deriving (Show)
data Class a = NewC { name2 :: String
, attrs :: [Attr Int]
, actions :: [Action]}
deriving (Show)
Итак, теперь мой вопрос заключается в том, как я могу представить любой произвольный класс в Haskell?
Я не хочу делать ООП в haskell. Imaging, что тип класса, который я пытаюсь сделать, будет узлом в графе. Однако каждый узел в графе будет другим классом.
Зачем вы хотите это сделать? Каков ваш прецедент? Это похоже на проблему [xy] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). –
Вы хотите сделать ООП с уроками в Haskell, или вы хотите представлять в классах Haskell с другого языка? –
Нет, я не хочу делать ООП в Хеккеле. Imaging, что тип класса, который я пытаюсь сделать, будет узлом в графе. – user3139545