+\r
+/**\r
+ * Databoard\r
+ */\r
+data Binding // Private\r
+class Serializable a where\r
+ getBinding :: Binding\r
+\r
+/**\r
+ * Reading graph\r
+ */\r
+data Resource\r
+data ReadGraph // Private\r
+class ReadTransaction where\r
+ getGraph :: ReadGraph\r
+\r
+resource :: ReadTransaction => String -> Resource\r
+(#) :: ReadTransaction => Resource -> Resource -> [Resource]\r
+valueOf :: ReadTransaction => Serializable a => Resource -> a\r
+\r
+/**\r
+ * Writing graph\r
+ */\r
+data WriteGraph // Private\r
+data Graph a = Graph (WriteGraph -> a)\r
+\r
+instance Monad Graph where\r
+ return x = Graph (\_ -> x)\r
+ Graph g >>= f = \wg -> f (g wg) wg\r
+ map f (Graph g) = Graph (f . g)\r
+\r
+newResource :: Graph Resource\r
+newResource = Graph __WriteGraph_newResource\r
+newLiteral :: Serializable a => a -> Graph Resource\r
+newLiteral = Graph (\wg -> \r
+ literal = __WriteGraph_newResource wg\r
+ _ = __WriteGraph_claimValue wg literal a getBinding\r
+ literal \r
+)\r
+statement :: Resource -> Resource -> Resource -> Graph ()\r
+statement s p o = Graph (\wg -> __WriteGraph_claim wg s p o)
\ No newline at end of file