Concurrent Clean : 型クラス (2)
[id:lethevert:20070415:p4]について
型引数で関連する型を渡しておけばよかったらしい。
class SQLConnection conn stmt stmtProp where //sqlOpen :: !String ![connProp] !*World -> (!PassFailSQL *(conn *stmt stmtProp), !*World) sqlClose :: !*(conn *stmt stmtProp) !*World -> (!MaybeFailSQL, !*World) sqlCommit :: !*(conn *stmt stmtProp) -> (!MaybeFailSQL, !*(conn *stmt stmtProp)) sqlRollback :: !*(conn *stmt stmtProp) -> (!MaybeFailSQL, !*(conn *stmt stmtProp)) sqlSetAutoCommit :: !Bool !*(conn *stmt stmtProp) -> (!MaybeFailSQL, !*(conn *stmt stmtProp)) sqlOpenStatement :: !String ![stmtProp] !*(conn *stmt stmtProp) -> (!PassFailSQL *stmt, !*(conn *stmt stmtProp)) sqlCloseStatement :: !*stmt !*(conn *stmt stmtProp) -> (!MaybeFailSQL, !*(conn *stmt stmtProp)) 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)