12345678910111213141516171819202122232425262728293031(** {2 Parametrized IO Interface} *)moduletypeIO=sigtype'atvalreturn:'a->'atvalfailwith:string->'atval(let+):'at->('a->'b)->'btval(let*):'at->('a->'bt)->'btval(and+):'at->'bt->('a*'b)ttypein_channeltypeout_channelvalstdin:in_channelvalstdout:out_channelvalread:in_channel->bytes->int->int->unittvalread_line:in_channel->stringtvalwrite:out_channel->bytes->int->int->unittvalwrite_string:out_channel->string->unittvalspawn:(unit->unitt)->unit(** Spawn a new task that executes concurrently. *)valfail:exn->unittvalcatch:(unit->'at)->(exn->'at)->'atend