Hi,

I have written a toy fixed-length-vector quasiquoter, so that you can write

[$vec|1,2|]

which has its type inferred as (Vec (S (S Z))) and you can write

mkVec :: Double -> Vec (S (S (S Z)))
mkVec x = [$vec|1,2,x|]

However, these above examples essentially demonstrate the entire syntax it supports: number literals, and anti-quoted variables.

I would like to extend my quasiquoter to support Haskell's full expression syntax, so that we can write, for example,

mkVec2 x = [$vec| if x > 5 then sin x else cos x |]

Is there a simple way to do this, i.e. using existing libraries? What I need is a Haskell expression parser which outputs values of type Language.Haskell.TH.Syntax.QExp, but I can't see one available in the TH libraries, or in the haskell-src(-exts) libraries.

Thoughts?

Cheers,

Reiner