
Hi all, I'm try to write some function in TH that I don't even know if it is possible. Consider the example from the tutorials sel 1 2 = [| \(x,_) -> x |] sel 2 2 = [| \(_,x) -> x |] If I want to write some function that will dynamically create a selection function according to its arguments and do something with it. fsel :: Int -> Int -> x fsel x y = $(sel x y) ... Imagine a stupid case for fsel :: Int -> Int -> Int fsel x y = $(sel x y) (x,y) The compiler complains that GHC stage restriction: `x' is used in a top-level splice, and must be imported, not defined locally In the first argument of `sel', namely `x' In the expression: $[splice](sel x y) (x, y) In the definition of `fsel': fsel x y = $[splice](sel x y) (x, y) what, indeed, makes sense. However, is there a possible way to generate Haskell functions from TH without having to instanciate its arguments? Thanks, hugo