:R3p      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno2013 Kei HibinoBSD3ex8k.hibino@gmail.com experimentalunknown Safe-Inferred Type represent SQL keywords.U,Diff String type for low-cost concatination.pMake U from qrShow U into qsU is empty or not.tWrap U into uUnwrap  into UVMake  from StringWShow v) default concatination separate by space.wY type with OverloadedString extension, can be involved same list with string literals. ,selectFoo = [SELECT, "a, b, c", FROM, "foo"]f  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUxprsytuVWzvw{|}~]  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUprstuVWTTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  UxprsytuVWzvw{|}~2013 Kei HibinoBSD3ex8k.hibino@gmail.com experimentalunknown Safe-Inferred Separate  list with delimiter  and map to q list.X Concatinate  list like unwords on q list. Concatinate q list into one .Y Separate  list with delimiter  and concatinate into one .ZDo Y and enclose by paren[4Directly concatinate SQL string without whitespaces.Define binary operator on ? type. Result is not delimited by whitespace like concat on q list.\Define binary operator on < type. Result is delimited by whitespace like unwords on q list.]0Binary operator to create qualified name on SQL.^0Binary operator to create comma separated words._8Binary operator for SQL string expression concatination.`&Binary eq operator for SQL expression.a*Binary not eq operator for SQL expression.b&Binary lt operator for SQL expression.c&Binary le operator for SQL expression.d&Binary gt operator for SQL expression.e&Binary ge operator for SQL expression.f#Binary operator for SQL name alias.gBinary  % operator for SQL boolean expression.hBinary  % operator for SQL boolean expression.iKFold operation using binary operator with empty result of zero length case.jDefine unary operator on  type represeted by specified 7. Result is delimited by whitespace like unwords on q list.k$Uni operator to create Parend words.lBinary  operator for SQL.m#Define uni operator of string from  uni operator.n&Define binary operator of string from  binary operator.XYZ[\]^_`abcdefghiBinary operator used in fold List to foldResultjklmnXYZ[\]^_`abcdefghijklmnXYZ\nf]^_`bcdeaghl[ijkmXYZ[\]^_`abcdefghijklmn ^_`abcdeghl2013 Kei HibinoBSD3ex8k.hibino@gmail.com experimentalunknown Safe-InferredoConcatinate keywords into q like unwordsoY  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWoYTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  UVWoo2013 Kei HibinoBSD3ex8k.hibino@gmail.com experimentalunknown Safe-Inferredp  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Zsql-words-0.1.3.1Language.SQL.Keyword.TypeLanguage.SQL.Keyword.Concat"Language.SQL.Keyword.Internal.TypeLanguage.SQL.KeywordKeywordSequenceINTERVAL TIMESTAMPTIMEDATEINNULLISEXISTSNOTORANDSIMILARLIKETHENELSEWHENENDCASE LAST_VALUE FIRST_VALUELEADLAG CUME_DIST PERCENT_RANK ROW_NUMBERRANK DENSE_RANK PARTITIONOVERMERGEVALUESINTOINSERTWHEREDEFAULTSETUPDATEOUTERNATURALFULLRIGHTLEFTINNERJOINWITHASFROM RETURNINGUSINGDELETE INTERSECTEXCEPTUNIONONLYROWSROWNEXTFIRSTFETCHLIMITFORHAVINGSETSGROUPINGROLLUPCUBEDESCASCBYORDERSOMEANYEVERYMINMAXAVGSUMCOUNTGROUPONDISTINCTALLSELECTDStringwordwordShowunwords'sepBy parenSepBy<++> defineBinOp<.>|*|.||..=..<>..<..<=..>..>=.asandorfold defineUniOpparenin'strUniOpstrBinOp unwordsSQLdStringbaseGHC.BaseString showDStringisEmptyDString fromDString toDString$fMonoidKeyword$fIsStringKeyworddspace $fEqKeyword$fMonoidDString $fReadDString $fShowDString $fEqDStringsepBy' concatStr defineBinOp'concat'