Hello,
I have hacked together some untested haskell code to do the following
z8 = printTH [d| instance TH_Render Char1 where
render x = HsLit $ HsChar $ 'a' |]
results in something like
$(sequence [(instanceD (cxt [])
(appT (conT (mkName "TH_Render")) (conT (mkName "Char1")))
[(funD (mkName "render")
[(clause [(varP (mkName "x"))]
(normalB
(infixE (Just (conE (mkName "HsLit"))) (varE (mkName "$"))
(Just
(infixE (Just (conE (mkName "HsChar"))) (varE (mkName
"$"))
(Just (litE (CharL 'a')))))))
[])])])])
(minus the "$(sequence )")
which you can then be pasted into your program and modified.
Hopefully this will people get started with template haskell (and save me a
little bit of typing).
Rene.
begin 666 TH_render.hs
M>RTC($]05$E/3E,@+69G;&%S9V]W+65X=',@+69T:" C+7T-"GLM(R!/4%1)
M3TY3("UF86QL;W6YT87@-"@T*:6UP;W)T(%1(7W1O;VQS+D)A' @+3X@82 M/B!R#0H-
M"FEN" ]($AS4&%R96X@)"!("D-"@T*:6YS=&%N8V4@*%1(7U)E;F1E' @82 H8BT^'0@;F%M93$@;F%M97,R(&-O;G,@;F%M97,S*2 ](&)U:6QD("=D871A1"!C
M>'0@;F%M93$@;F%M97,R(&-O;G,@;F%M97,S#0H@(')E;F1E'0@='EP(&1E8W,I
M(#T@8G5I;&0@)VEN'0@='EP(&1E8W,-"B @2!D96-S#0H-"FEN7!E7!E7!E7!E
M,2!N86UE('-T$,@7!E,@T*("!R96YD97(@*$9OW1R:6-T+"!T7 I(#T@8G5I;&0@
M)W9AW1R:6-T+"!T7 I#0H-"FEN7!E('=H97)E#0H@(')E;F1E'0@='EP*2 ](&)U:6QD("=F;W)A;&Q4(&YA;65S(&-X="!T>7 -"B @
M7 R*2 ](&)U:6QD("=A<'!4('1Y<#$@='EP,B -"@T*:6YS=&%N8V4@5$A?
M4F5N9&5R(%-T' I(#T@8G5I;&0@)VYO' R
M*2 ](&)U:6QD("=A<'!%(&5X<#$@97AP,B -"B @(')E;F1E' I(#T@8G5I;&0@)W1U<$4@97AP#0H@("!R96YD97(@*$-O;F1%
M(&5X<#$@97AP,B!E>' S*2 ](&)U:6QD("=C;VYD12!E>' Q(&5X<#(@97AP
M,R -"B @(')E;F1E' @='EP*2 ](&)U:6QD("=S:6=%(&5X<"!T>7 -"B @(')E;F1E$4@;45X<#$@97AP(&U%>' R*2 ](&)U:6QD("=I;F9I>$4@;45X<#$@97AP
M(&U%>' R( T*#0II;G-T86YC92!42%]296YD97(@*$UA>6)E($5X<"D@=VAE
M2!D96-S*2 ](&)U:6QD("=M871C:"!P870@8F]D>2!D96-S#0H-
M"FEN' I(#T@8G5I;&0@)V9R;VU2(&5X< T*(" @' R*2 ](&)U:6QD("=F' R
M#0H@("!R96YD97(@*$9R;VU4;U(@97AP,2!E>' R*2 @/2!B=6EL9" G9G)O
M;51O4B!E>' Q(&5X<#(-"B @(')E;F1E' R(&5X<#,I(#T@8G5I;&0@)V9R;VU4:&5N5&]2(&5X<#$@97AP,B!E>' S
M( T*#0II;G-T86YC92!42%]296YD97(@*%-T' I(#T@8G5I;&0@
M)VYO' @97AP#0H@("!R96YD97(@*%!A=$<@' I('=H97)E#0H@("!R96YD97(@*&YA;64L(&5X<"D@/2!B
M=6EL9" G9FEE;&1%>' @;F%M92!E>' -"@T*:6YS=&%N8V4@*%1(7U)E;F1E
M'1S(#T@2'-087)E;B D("AF
M=6YC7V]U=" G8WAT*2!@2'-!<'!@("A(#(@
M/2!PC4-"BTM('@S(#T@<#(@>#(@#0H-
M"@T*+2T@0V%N(&%L=V%Y5!R:6YT("0@
M2'-,:7-T(&1E8W,G#0H@(" @(" @(" @(" @(" @("!P=713='(@(EQN(@T*
M#0IN97=T>7!E($-H87(Q(#T@0VAAC4-"GHX(#T@<')I;G142"!;9'P@:6YS=&%N8V4@5$A?4F5N9&5R($-H87(Q
M('=H97)E#0H@(" @(" @(" @(" @(" @(" @(" @("!R96YD97(@>" ]($AS
M3&ET("0@2'-#:&%R("0@)V$G('Q=#0H-"GDQ(#T@<')I;G1!4U0@6V1\(&EN
M'0@6UTI#0H@(" @*&%P<%0@
M*&-O;E0@*&UK3F%M92 B5$A?4F5N9&5R(BDI("AC;VY4("AM:TYA;64@(D-H
M87(Q(BDI*0T*(" @(%LH9G5N1" H;6M.86UE(")R96YD97(B*0T*(" @(" @
M("!;*&-L875S92!;*'9A"(I*5T-"B @(" @(" @(" @
M("AN;W)M86Q"#0H@(" @(" @(" @(" @(" H:6YF:7A%("A*=7-T("AC;VY%
M("AM:TYA;64@(DAS3&ET(BDI*2 H=F%R12 H;6M.86UE("(D(BDI#0H@(" @
M(" @(" @(" @(" @(" H2G5S= T*(" @(" @(" @(" @(" @(" @(" @*&EN
M9FEX12 H2G5S=" H8V]N12 H;6M.86UE(")(RTC($]05$E/3E,@+69G;&%S9V]W+65X=',@+69T:" C+7T-"FUO9'5L92!4
M2%]T;V]L6YT87@-"@T*:6YS
M=&%N8V4@4VAO=R!);F9O('=H97)E#0H@('-H;W<@*%1Y0V]N22!D96,I(#T@
M(E1Y0V]N22 D("(@*RL@