Concurrent Clean : 型クラス
使いかたに悩む。
これでは、うまく動かないのだよね。こういう場合ってどうすればいいんだろう?
class SQLConnOpen conn connProp where sqlOpen :: !String ![connProp] !*World -> (!PassFailSQL *conn, !*World) class SQLConnection conn where sqlClose :: !*conn !*World -> (!MaybeFailSQL, !*World) sqlCommit :: !*conn -> (!MaybeFailSQL, !*conn) sqlRollback :: !*conn -> (!MaybeFailSQL, !*conn) sqlSetAutoCommit :: !Bool !*conn -> (!MaybeFailSQL, !*conn) class SQLStmtOpen conn stmt stmtProp where sqlOpenStatement :: !String ![stmtProp] !*conn -> (!PassFailSQL *stmt, !*conn) class SQLStmtClose conn stmt where sqlCloseStatement :: !*stmt !*conn -> (!MaybeFailSQL, !*conn) class SQLStatement stmt where sqlBind :: ![SQLData] !*stmt -> (!MaybeFailSQL, !*stmt) sqlBindDouble :: !Int !Real !*stmt -> (!MaybeFailSQL, !*stmt) sqlBindInt :: !Int !Int !*stmt -> (!MaybeFailSQL, !*stmt) sqlBindText :: !Int !String !*stmt -> (!MaybeFailSQL, !*stmt) sqlBindNull :: !Int !*stmt -> (!MaybeFailSQL, !*stmt) sqlUpdate :: !*stmt -> (!PassFailSQL Int, !*stmt) sqlQuery :: !*stmt -> (!MaybeFailSQL, !*stmt) sqlFetch :: !*stmt -> (!PassFailSQL Bool, !*stmt) sqlColumnCount :: !*stmt -> (!Int, !*stmt) sqlColumn :: !Int !*stmt -> (!String, !*stmt) sqlColumns :: !*stmt -> (!{!String}, !*stmt) sqlResult :: !Int !*stmt -> (!PassFailSQL SQLData, !*stmt) sqlResults :: !*stmt -> (!PassFailSQL {!SQLData}, !*stmt)