T      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~GHC only experimental!Michael Sloan <mgsloan@gmail.com>None@Specifies all of the information needed to implement a plumber. The plumber implementation "Optional explicit type signatures  Arities to generate - 26 is max Prefix to use for operator GSpecifies all of the information needed to construct type declarations  for the plumber. Type of the left argument' s result Type of the right argument' s result -Results type. This needs to be wrapped in a 5 forall naming all of the utilized type variables. "A basic set of types, which make r' the left type, and r'' the right type. M The resultType is a forall that introduces these type variables, and has J undefined content. Therefore any implementation in terms of baseTypes M needs to redefine resultType, as the Forall has undefined as its content. ICreates a plumber spec for the given prefix for the generated operators, N and the name of the infix operator to use to construct the implementation. FAll of the operator names that the given PlumberSpec would implement. HFor now this is just a string-yielding function, to be evaluated by the J user, to generate the line defining the fixities. This code should be 7 pasted below the TH invocation of implementPlumbers 6Implements all of the plumbers specified by the given  PlumberSpec. /Implement only the specific plumber requested.       GHC only experimental!Michael Sloan <mgsloan@gmail.com>None  !"#$%  !"#$%  !"#$%  !"#$%GHC only experimental!Michael Sloan <mgsloan@gmail.com>Nonem&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~m&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~m~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      \~}|{zyxwvutsrqponmlkjihgfedcba`_^]~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      m&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~GHC only experimental!Michael Sloan <mgsloan@gmail.com>None6      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~6      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~6-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.6      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~plumbers-0.0.2Control.Plumbers.THControl.Plumbers.SpecsControl.Plumbers.MonadControl.Plumbers PlumberSpec plumberOpE plumberTypesplumberArities plumberPrefix PlumberTypesleftType rightType resultType baseTypesbaseSpec operatorNames aritiesStringimplementPlumbersimplementPlumberappsTarrowsTtuplesTmkVEmkVPmkVTmkVB addForalls productSpeccompositionSpec lbindSpec rbindSpec frbindSpec flbindSpec productTypescompositionTypes lbindTypes rbindTypes fbindTypesaddMonadContextaddBaseContext>=^>=<>=>>=&>=*>=^^>=^<>=^>>=^&>=^*>=<^>=<<>=<>>=<&>=<*>=>^>=><>=>>>=>&>=>*>=&^>=&<>=&>>=&&>=&*>=*^>=*<>=*>>=*&>=**>=^^^>=^^<>=^^>>=^^&>=^^*>=^<^>=^<<>=^<>>=^<&>=^<*>=^>^>=^><>=^>>>=^>&>=^>*>=^&^>=^&<>=^&>>=^&&>=^&*>=^*^>=^*<>=^*>>=^*&>=^**>=<^^>=<^<>=<^>>=<^&>=<^*>=<<^>=<<<>=<<>>=<<&>=<<*>=<>^>=<><>=<>>>=<>&>=<>*>=<&^>=<&<>=<&>>=<&&>=<&*>=<*^>=<*<>=<*>>=<*&>=<**>=>^^>=>^<>=>^>>=>^&>=>^*>=><^>=><<>=><>>=><&>=><*>=>>^>=>><>=>>>>=>>&>=>>*>=>&^>=>&<>=>&>>=>&&>=>&*>=>*^>=>*<>=>*>>=>*&>=>**>=&^^>=&^<>=&^>>=&^&>=&^*>=&<^>=&<<>=&<>>=&<&>=&<*>=&>^>=&><>=&>>>=&>&>=&>*>=&&^>=&&<>=&&>>=&&&>=&&*>=&*^>=&*<>=&*>>=&*&>=&**>=*^^>=*^<>=*^>>=*^&>=*^*>=*<^>=*<<>=*<>>=*<&>=*<*>=*>^>=*><>=*>>>=*>&>=*>*>=*&^>=*&<>=*&>>=*&&>=*&*>=**^>=**<>=**>>=**&>=***<=^<=<<=><=&<=*<=^^<=^<<=^><=^&<=^*<=<^<=<<<=<><=<&<=<*<=>^<=><<=>><=>&<=>*<=&^<=&<<=&><=&&<=&*<=*^<=*<<=*><=*&<=**<=^^^<=^^<<=^^><=^^&<=^^*<=^<^<=^<<<=^<><=^<&<=^<*<=^>^<=^><<=^>><=^>&<=^>*<=^&^<=^&<<=^&><=^&&<=^&*<=^*^<=^*<<=^*><=^*&<=^**<=<^^<=<^<<=<^><=<^&<=<^*<=<<^<=<<<<=<<><=<<&<=<<*<=<>^<=<><<=<>><=<>&<=<>*<=<&^<=<&<<=<&><=<&&<=<&*<=<*^<=<*<<=<*><=<*&<=<**<=>^^<=>^<<=>^><=>^&<=>^*<=><^<=><<<=><><=><&<=><*<=>>^<=>><<=>>><=>>&<=>>*<=>&^<=>&<<=>&><=>&&<=>&*<=>*^<=>*<<=>*><=>*&<=>**<=&^^<=&^<<=&^><=&^&<=&^*<=&<^<=&<<<=&<><=&<&<=&<*<=&>^<=&><<=&>><=&>&<=&>*<=&&^<=&&<<=&&><=&&&<=&&*<=&*^<=&*<<=&*><=&*&<=&**<=*^^<=*^<<=*^><=*^&<=*^*<=*<^<=*<<<=*<><=*<&<=*<*<=*>^<=*><<=*>><=*>&<=*>*<=*&^<=*&<<=*&><=*&&<=*&*<=**^<=**<<=**><=**&<=***<<<<^<<<<<><<&<<*<<^^<<^<<<^><<^&<<^*<<<^<<<<<<<><<<&<<<*<<>^<<><<<>><<>&<<>*<<&^<<&<<<&><<&&<<&*<<*^<<*<<<*><<*&<<**<<^^^<<^^<<<^^><<^^&<<^^*<<^<^<<^<<<<^<><<^<&<<^<*<<^>^<<^><<<^>><<^>&<<^>*<<^&^<<^&<<<^&><<^&&<<^&*<<^*^<<^*<<<^*><<^*&<<^**<<<^^<<<^<<<<^><<<^&<<<^*<<<<^<<<<<<<<<><<<<&<<<<*<<<>^<<<><<<<>><<<>&<<<>*<<<&^<<<&<<<<&><<<&&<<<&*<<<*^<<<*<<<<*><<<*&<<<**<<>^^<<>^<<<>^><<>^&<<>^*<<><^<<><<<<><><<><&<<><*<<>>^<<>><<<>>><<>>&<<>>*<<>&^<<>&<<<>&><<>&&<<>&*<<>*^<<>*<<<>*><<>*&<<>**<<&^^<<&^<<<&^><<&^&<<&^*<<&<^<<&<<<<&<><<&<&<<&<*<<&>^<<&><<<&>><<&>&<<&>*<<&&^<<&&<<<&&><<&&&<<&&*<<&*^<<&*<<<&*><<&*&<<&**<<*^^<<*^<<<*^><<*^&<<*^*<<*<^<<*<<<<*<><<*<&<<*<*<<*>^<<*><<<*>><<*>&<<*>*<<*&^<<*&<<<*&><<*&&<<*&*<<**^<<**<<<**><<**&<<***>>^>><>>>>>&>>*>>^^>>^<>>^>>>^&>>^*>><^>><<>><>>><&>><*>>>^>>><>>>>>>>&>>>*>>&^>>&<>>&>>>&&>>&*>>*^>>*<>>*>>>*&>>**>>^^^>>^^<>>^^>>>^^&>>^^*>>^<^>>^<<>>^<>>>^<&>>^<*>>^>^>>^><>>^>>>>^>&>>^>*>>^&^>>^&<>>^&>>>^&&>>^&*>>^*^>>^*<>>^*>>>^*&>>^**>><^^>><^<>><^>>><^&>><^*>><<^>><<<>><<>>><<&>><<*>><>^>><><>><>>>><>&>><>*>><&^>><&<>><&>>><&&>><&*>><*^>><*<>><*>>><*&>><**>>>^^>>>^<>>>^>>>>^&>>>^*>>><^>>><<>>><>>>><&>>><*>>>>^>>>><>>>>>>>>>&>>>>*>>>&^>>>&<>>>&>>>>&&>>>&*>>>*^>>>*<>>>*>>>>*&>>>**>>&^^>>&^<>>&^>>>&^&>>&^*>>&<^>>&<<>>&<>>>&<&>>&<*>>&>^>>&><>>&>>>>&>&>>&>*>>&&^>>&&<>>&&>>>&&&>>&&*>>&*^>>&*<>>&*>>>&*&>>&**>>*^^>>*^<>>*^>>>*^&>>*^*>>*<^>>*<<>>*<>>>*<&>>*<*>>*>^>>*><>>*>>>>*>&>>*>*>>*&^>>*&<>>*&>>>*&&>>*&*>>**^>>**<>>**>>>**&>>***$^$<$>$&$*$^^$^<$^>$^&$^*$<^$<<$<>$<&$<*$>^$><$>>$>&$>*$&^$&<$&>$&&$&*$*^$*<$*>$*&$**$^^^$^^<$^^>$^^&$^^*$^<^$^<<$^<>$^<&$^<*$^>^$^><$^>>$^>&$^>*$^&^$^&<$^&>$^&&$^&*$^*^$^*<$^*>$^*&$^**$<^^$<^<$<^>$<^&$<^*$<<^$<<<$<<>$<<&$<<*$<>^$<><$<>>$<>&$<>*$<&^$<&<$<&>$<&&$<&*$<*^$<*<$<*>$<*&$<**$>^^$>^<$>^>$>^&$>^*$><^$><<$><>$><&$><*$>>^$>><$>>>$>>&$>>*$>&^$>&<$>&>$>&&$>&*$>*^$>*<$>*>$>*&$>**$&^^$&^<$&^>$&^&$&^*$&<^$&<<$&<>$&<&$&<*$&>^$&><$&>>$&>&$&>*$&&^$&&<$&&>$&&&$&&*$&*^$&*<$&*>$&*&$&**$*^^$*^<$*^>$*^&$*^*$*<^$*<<$*<>$*<&$*<*$*>^$*><$*>>$*>&$*>*$*&^$*&<$*&>$*&&$*&*$**^$**<$**>$**&$****^*<*>*&***^^*^<*^>*^&*^**<^*<<*<>*<&*<**>^*><*>>*>&*>**&^*&<*&>*&&*&***^**<**>**&****^^^*^^<*^^>*^^&*^^**^<^*^<<*^<>*^<&*^<**^>^*^><*^>>*^>&*^>**^&^*^&<*^&>*^&&*^&**^*^*^*<*^*>*^*&*^***<^^*<^<*<^>*<^&*<^**<<^*<<<*<<>*<<&*<<**<>^*<><*<>>*<>&*<>**<&^*<&<*<&>*<&&*<&**<*^*<*<*<*>*<*&*<***>^^*>^<*>^>*>^&*>^**><^*><<*><>*><&*><**>>^*>><*>>>*>>&*>>**>&^*>&<*>&>*>&&*>&**>*^*>*<*>*>*>*&*>***&^^*&^<*&^>*&^&*&^**&<^*&<<*&<>*&<&*&<**&>^*&><*&>>*&>&*&>**&&^*&&<*&&>*&&&*&&**&*^*&*<*&*>*&*&*&****^^**^<**^>**^&**^***<^**<<**<>**<&**<***>^**><**>>**>&**>***&^**&<**&>**&&**&****^***<***>***&****