id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	os	architecture	failure	difficulty	testcase	blockedby	blocking	related
2041	Allow splicing in concrete syntax	igloo		"
Template Haskell tends to lag behind GHC extensions, so it might be nice to allow concrete syntax to be returned, e.g. something like
{{{
f = $( return (RawE ""5 + 6"") )
}}}
There wouldn't be any need to restrict it to the top level, e.g. this would also be allowed:
{{{
f = $( return (InfixE (IntE 5) '(+) (RawE ""6"")) )
}}}

One possible disadvantage is that it might result in TH languishing even further behind, as there is less incentive to fill in the gaps.

Also, if a module splices in a raw expression from a TH library, what extensions should be enabled when parsing the string? Should we use the extensions enabled for the module, or should the `RawE` constructor specify the extensions to be used? We actually have this problem already, as (for example) when instances are spliced in we might need !OverlappingInstances enabled, so just using the extensions enabled for the module would be consistent.
"	feature request	new	normal	_|_	Template Haskell	6.8.2			mjm2002@… reiner.pope@… pho@…	Unknown/Multiple	Unknown/Multiple	None/Unknown	Unknown				
