2013-04-06 10 views
1

Как я могу построить график в Haskell, имеющий:Как я могу построить график в Haskell?

type Node = Int 
type Arc = (Node, Node) 

и функции:

class Graph g where 
     build :: [Node] -> [Arc] -> g 
+0

'Graph' - это не тип, это класс типа. Сначала вам нужно определить подходящий тип. –

ответ

9

В настоящее время вы просто иметь typeclass, который Сорта, как интерфейс ООП. Подобно интерфейсу, вы не можете фактически «построить» класс. Вам нужно выбрать конкретную реализацию (используя ключевое слово data), а затем реализовать на нем функцию build. Это то, что вы бы затем огибают функции, которые хотят Graph

Для простого примера:

--The concrete data type 
data NaiveGraph = NG [Node] [Arc] 

--Now we make it an instance of Graph 
instance Graph NaiveGraph where 
    build = NG 

Это может или не может быть приемлемым экземпляром в зависимости от того, что вы хотите сделать. Больше информации о ваших реальных целях поможет мне предложить лучшее представление.