Prog "OracleSocket" ["CEventOracle","Oracle","IOExts","Socket","IO","Prelude","System","OracleIO","OraclePrelude","OracleSystem"] [] [Func ("OracleSocket","listenOn") 2 Public (FuncType (TCons ("Prelude","Int") []) (FuncType (TCons ("CEventOracle","Ref") []) (FuncType (TCons ("CEventOracle","Ref") []) (FuncType (TCons ("Prelude","()") []) (TCons ("Prelude","IO") [TCons ("Socket","Socket") []]))))) (Rule [2,1] (Comb FuncCall ("CEventOracle","replace") [Var 1,Comb FuncCall ("Oracle","$#") [Comb (FuncPartCall 2) ("Oracle","partFunc") [Comb (FuncPartCall 2) ("OracleSocket","prim_listenOn") []],Var 2,Var 1]])),Func ("OracleSocket","socketListen") 3 Public (FuncType (TCons ("Socket","Socket") []) (FuncType (TCons ("Prelude","Int") []) (FuncType (TCons ("CEventOracle","Ref") []) (FuncType (TCons ("CEventOracle","Ref") []) (FuncType (TCons ("Prelude","()") []) (TCons ("Prelude","IO") [TCons ("Prelude","()") []])))))) (Rule [2,3,1] (Let [(4,Comb FuncCall ("CEventOracle","fresh") [Comb ConsCall ("Prelude","()") []])] (Comb FuncCall ("CEventOracle","expand") [Var 1,Comb ConsCall ("Prelude",":") [Var 4,Comb ConsCall ("Prelude","[]") []],Comb FuncCall ("Oracle","$#") [Comb FuncCall ("Oracle","$##") [Comb FuncCall ("Oracle","compose") [Comb (FuncPartCall 2) ("Oracle","partCall") [],Comb (FuncPartCall 2) ("Oracle","compose") [Comb (FuncPartCall 3) ("Oracle","partFunc") []],Comb (FuncPartCall 3) ("OracleSocket","prim_socketListen") []],Var 2,Var 1],Var 3,Var 4]]))),Func ("OracleSocket","socketAccept") 2 Public (FuncType (TCons ("Socket","Socket") []) (FuncType (TCons ("CEventOracle","Ref") []) (FuncType (TCons ("CEventOracle","Ref") []) (FuncType (TCons ("Prelude","()") []) (TCons ("Prelude","IO") [TCons ("Prelude","(,)") [TCons ("Prelude","[]") [TCons ("Prelude","Char") []],TCons ("IO","Handle") []]]))))) (Rule [2,1] (Comb FuncCall ("CEventOracle","replace") [Var 1,Comb FuncCall ("Oracle","$##") [Comb (FuncPartCall 2) ("Oracle","partFunc") [Comb (FuncPartCall 2) ("OracleSocket","prim_socketAccept") []],Var 2,Var 1]])),Func ("OracleSocket","waitForSocketAccept") 3 Public (FuncType (TCons ("Socket","Socket") []) (FuncType (TCons ("Prelude","Int") []) (FuncType (TCons ("CEventOracle","Ref") []) (FuncType (TCons ("CEventOracle","Ref") []) (FuncType (TCons ("Prelude","()") []) (TCons ("Prelude","IO") [TCons ("Prelude","Maybe") [TCons ("Prelude","(,)") [TCons ("Prelude","[]") [TCons ("Prelude","Char") []],TCons ("IO","Handle") []]]])))))) (Rule [2,3,1] (Let [(4,Comb FuncCall ("CEventOracle","fresh") [Comb ConsCall ("Prelude","()") []])] (Comb FuncCall ("CEventOracle","expand") [Var 1,Comb ConsCall ("Prelude",":") [Var 4,Comb ConsCall ("Prelude","[]") []],Comb FuncCall ("Oracle","$#") [Comb FuncCall ("Oracle","$##") [Comb FuncCall ("Oracle","compose") [Comb (FuncPartCall 2) ("Oracle","partCall") [],Comb (FuncPartCall 2) ("Oracle","compose") [Comb (FuncPartCall 3) ("Oracle","partFunc") []],Comb (FuncPartCall 3) ("OracleSocket","prim_waitForSocketAccept") []],Var 2,Var 1],Var 3,Var 4]]))),Func ("OracleSocket","connectToSocket") 3 Public (FuncType (TCons ("Prelude","[]") [TCons ("Prelude","Char") []]) (FuncType (TCons ("Prelude","Int") []) (FuncType (TCons ("CEventOracle","Ref") []) (FuncType (TCons ("CEventOracle","Ref") []) (FuncType (TCons ("Prelude","()") []) (TCons ("Prelude","IO") [TCons ("IO","Handle") []])))))) (Rule [2,3,1] (Let [(4,Comb FuncCall ("CEventOracle","fresh") [Comb ConsCall ("Prelude","()") []])] (Comb FuncCall ("CEventOracle","expand") [Var 1,Comb ConsCall ("Prelude",":") [Var 4,Comb ConsCall ("Prelude","[]") []],Comb FuncCall ("Oracle","$#") [Comb FuncCall ("Oracle","$##") [Comb FuncCall ("Oracle","compose") [Comb (FuncPartCall 2) ("Oracle","partCall") [],Comb (FuncPartCall 2) ("Oracle","compose") [Comb (FuncPartCall 3) ("Oracle","partFunc") []],Comb (FuncPartCall 3) ("OracleSocket","prim_connectToSocket") []],Var 2,Var 1],Var 3,Var 4]]))),Func ("OracleSocket","prim_listenOn") 2 Private (FuncType (TCons ("Prelude","Int") []) (FuncType (TCons ("CEventOracle","Ref") []) (FuncType (TCons ("CEventOracle","Ref") []) (FuncType (TCons ("Prelude","()") []) (TCons ("Prelude","IO") [TCons ("Socket","Socket") []]))))) (Rule [2,1] (Comb FuncCall ("CEventOracle","collapse") [Var 1,Comb (FuncPartCall 2) ("Oracle","lambda_world") [Comb FuncCall ("Oracle","safeIOResult") [Comb FuncCall ("Socket","prim_listenOn") [Var 2]]]])),Func ("OracleSocket","listenOnFresh") 1 Public (FuncType (TCons ("CEventOracle","Ref") []) (FuncType (TCons ("CEventOracle","Ref") []) (FuncType (TCons ("Prelude","()") []) (TCons ("Prelude","IO") [TCons ("Prelude","(,)") [TCons ("Prelude","Int") [],TCons ("Socket","Socket") []]])))) (Rule [1] (Comb FuncCall ("CEventOracle","collapse") [Var 1,Comb (FuncPartCall 2) ("Oracle","lambda_world") [Comb FuncCall ("Oracle","safeIOResult") [Comb FuncCall ("Socket","listenOnFresh") []]]])),Func ("OracleSocket","prim_socketListen") 3 Private (FuncType (TCons ("Socket","Socket") []) (FuncType (TCons ("Prelude","Int") []) (FuncType (TCons ("CEventOracle","Ref") []) (FuncType (TCons ("CEventOracle","Ref") []) (FuncType (TCons ("Prelude","()") []) (TCons ("Prelude","IO") [TCons ("Prelude","()") []])))))) (Rule [3,2,1] (Comb FuncCall ("CEventOracle","collapse") [Var 1,Comb (FuncPartCall 2) ("Oracle","lambda_world") [Comb FuncCall ("Socket","prim_socketListen") [Var 3,Var 2]]])),Func ("OracleSocket","prim_socketAccept") 2 Private (FuncType (TCons ("Socket","Socket") []) (FuncType (TCons ("CEventOracle","Ref") []) (FuncType (TCons ("CEventOracle","Ref") []) (FuncType (TCons ("Prelude","()") []) (TCons ("Prelude","IO") [TCons ("Prelude","(,)") [TCons ("Prelude","[]") [TCons ("Prelude","Char") []],TCons ("IO","Handle") []]]))))) (Rule [2,1] (Comb FuncCall ("CEventOracle","collapse") [Var 1,Comb (FuncPartCall 2) ("Oracle","lambda_world") [Comb FuncCall ("Oracle","safeIOResult") [Comb FuncCall ("Socket","prim_socketAccept") [Var 2]]]])),Func ("OracleSocket","prim_waitForSocketAccept") 3 Private (FuncType (TCons ("Socket","Socket") []) (FuncType (TCons ("Prelude","Int") []) (FuncType (TCons ("CEventOracle","Ref") []) (FuncType (TCons ("CEventOracle","Ref") []) (FuncType (TCons ("Prelude","()") []) (TCons ("Prelude","IO") [TCons ("Prelude","Maybe") [TCons ("Prelude","(,)") [TCons ("Prelude","[]") [TCons ("Prelude","Char") []],TCons ("IO","Handle") []]]])))))) (Rule [3,2,1] (Comb FuncCall ("CEventOracle","collapse") [Var 1,Comb (FuncPartCall 2) ("Oracle","lambda_world") [Comb FuncCall ("Oracle","safeIOResult") [Comb FuncCall ("Socket","prim_waitForSocketAccept") [Var 3,Var 2]]]])),Func ("OracleSocket","prim_connectToSocket") 3 Private (FuncType (TCons ("Prelude","[]") [TCons ("Prelude","Char") []]) (FuncType (TCons ("Prelude","Int") []) (FuncType (TCons ("CEventOracle","Ref") []) (FuncType (TCons ("CEventOracle","Ref") []) (FuncType (TCons ("Prelude","()") []) (TCons ("Prelude","IO") [TCons ("IO","Handle") []])))))) (Rule [3,2,1] (Comb FuncCall ("CEventOracle","collapse") [Var 1,Comb (FuncPartCall 2) ("Oracle","lambda_world") [Comb FuncCall ("Oracle","safeIOResult") [Comb FuncCall ("Socket","prim_connectToSocket") [Var 3,Var 2]]]]))] []