--- /dev/null
+definition module GenParse\r
+\r
+import StdGeneric, StdMaybe\r
+\r
+class ParseInput s where\r
+ parseInput :: s -> (Maybe Char, s)\r
+\r
+:: StringInput = { si_str :: !String, si_pos :: !Int} \r
+mkStringInput :: String -> StringInput \r
+\r
+instance ParseInput StringInput \r
+instance ParseInput File\r
+\r
+:: Expr\r
+generic gParse a :: Expr -> Maybe a\r
+\r
+derive gParse Int, Char, Bool, Real, String, UNIT, PAIR, EITHER, CONS, FIELD, OBJECT, [], {!}, {}\r
+\r
+parseString :: String -> Maybe a | gParse{|*|} a\r
+parseFile :: File -> Maybe a | gParse{|*|} a
\ No newline at end of file